C#编译DLL中System.Data.SqlClient加载失败问题求助
解决System.Data.SqlClient版本0.0.0.0加载异常的方案
1. 排查项目引用方式
- 右键项目→引用,找到
System.Data.SqlClient,查看其属性:- 若为GAC(全局程序集缓存)引用,检查复制本地是否设为
True——CAD运行环境的GAC可能没有对应版本,必须让依赖DLL随项目输出。 - 若找不到该引用,说明原项目是隐式依赖,直接改用NuGet包管理更可靠。
- 若为GAC(全局程序集缓存)引用,检查复制本地是否设为
2. 安装适配的NuGet包版本
针对.NET Framework 4.7.2,优先选择System.Data.SqlClient 4.8.5(这是适配.NET Framework 4.6.1+的稳定版本,避免选5.x及以上的.NET Core专属版本):
- 包管理器控制台执行:
Install-Package System.Data.SqlClient -Version 4.8.5 - 或在NuGet包管理器中搜索并安装指定版本。
3. 添加程序集绑定重定向
错误显示版本0.0.0.0,核心原因是运行时无法匹配正确的程序集版本,需在配置文件中添加绑定规则:
- 编辑项目的
App.config,在<runtime>节点内加入:<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Data.SqlClient" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.8.5.0" newVersion="4.8.5.0" /> </dependentAssembly> </assemblyBinding> - 编译后,将生成的
[你的DLL名称].config和DLL一起放到CAD加载目录;若CAD有自身配置文件(如AutoCAD的acad.exe.config),也可将这段配置追加进去。
4. 验证输出依赖
- 检查项目输出目录(
bin/Debug或bin/Release),确认System.Data.SqlClient.dll和.pdb文件存在。 - 若缺失,右键NuGet引用的
System.Data.SqlClient→属性,将复制本地设为True,重新编译。
5. 确认CAD的.NET环境
- 用CAD内置命令验证运行环境版本(如AutoCAD输入
(dotnet-version)),确保CAD使用的.NET Framework版本为4.7.2,与项目目标版本一致。
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

