VS2019调试.NET Core 3.1时找不到Microsoft.Data.SqlClient.resources.dll
针对Microsoft.Data.SqlClient.resources.dll缺失问题的C#层面解决方案
异常信息:Could not load file or assembly 'C:\Users\user1\Dev\source\repos\repo_name\project_name\bin\Debug\netcoreapp3.1\runtimes\win\lib\netcoreapp3.1\Microsoft.Data.SqlClient.resources.dll'. The system cannot find the file specified.
以下是无需重装VS/SDK的可落地解决办法:
- 自定义程序集解析事件绕过资源加载
在程序入口(如Program.cs的Main方法最顶部)添加如下代码,直接拦截缺失的资源程序集请求,不抛出异常:
AppDomain.CurrentDomain.AssemblyResolve += (_, args) => { if (args.Name.StartsWith("Microsoft.Data.SqlClient.resources", StringComparison.OrdinalIgnoreCase)) { // 资源程序集缺失不影响核心功能,直接返回null跳过加载 return null; } return null; };
- 修改项目.csproj配置修复资源输出问题
在项目文件中添加如下配置,限制附属资源语言,避免不必要的资源程序集加载请求:
<PropertyGroup> <!-- 指定默认语言,禁止生成多余的本地化资源文件 --> <NeutralLanguage>en-US</NeutralLanguage> <SatelliteResourceLanguages>en-US</SatelliteResourceLanguages> </PropertyGroup> <ItemGroup> <!-- 强制绑定兼容.NET Core 3.1的稳定版本SqlClient,避免版本混淆 --> <PackageReference Include="Microsoft.Data.SqlClient" Version="2.1.5" /> </ItemGroup>
- 预加载核心SqlClient程序集
在首次实例化SqlConnection之前,手动触发核心程序集加载,规避运行时依赖解析的链式错误:
// 任意业务代码运行前执行一次即可 _ = typeof(Microsoft.Data.SqlClient.SqlConnection);
注:Microsoft.Data.SqlClient.resources.dll属于本地化附属程序集,仅用于返回对应语言的异常提示,缺失不会影响数据库操作的核心逻辑,上述方案均是稳定的长期解决方案,不会产生额外副作用。
内容的提问来源于stack exchange,提问作者EnocNRoll - AnandaGopal Pardue
相关产品推荐
相关产品推荐

