VS2015中SQLCLR项目编译报错:System.Xml.IXmlLineInfo未定义
解决VS2015 SQLCLR项目编译时System.Xml.IXmlLineInfo引用错误的思路
我之前在做SQLCLR项目时也碰到过类似的引用冲突问题,结合你的场景,给你几个针对性的排查方向:
直接引用正确版本的System.Xml程序集
不要只依赖System.Core的间接引用,右键项目→添加引用,在程序集列表里找到System.Xml,选择版本为4.0.0.0(对应.NET 4.5.1的官方版本)。添加完成后,在引用的属性面板里:- 把Specific Version设为
True,避免编译器自动匹配不兼容的高版本; - 把Copy Local设为
False,因为System.Xml是SQL Server 2016自带的支持程序集,不需要复制到输出目录。
- 把Specific Version设为
确认项目框架与SQL Server版本匹配
右键项目→属性:- 在「应用程序」标签下,确认目标框架是
.NET Framework 4.5.1,不要误选其他版本; - 在「SQLCLR」标签下,将目标SQL Server版本设为
SQL Server 2016,确保项目配置与部署环境完全兼容。
- 在「应用程序」标签下,确认目标框架是
清理重建项目,清除缓存干扰
有时候项目的编译缓存会导致引用异常,按以下步骤操作:- 右键项目→清理,清除现有编译文件;
- 手动删除项目目录下的
bin和obj文件夹; - 重新生成项目,让编译器重新解析所有引用。
检查代码中的命名空间引用
如果你的代码里直接用到了IXmlLineInfo接口,记得显式添加using System.Xml;命名空间,避免编译器无法定位类型定义。另外确认using System.Xml.Linq;没有被误注释或遗漏。排查GAC引用异常
确保System.Xml是从全局程序集缓存(GAC)引用的,路径应该是C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Xml.dll。如果是手动添加的本地dll,删除后重新从GAC引用,避免版本不匹配。
内容的提问来源于stack exchange,提问作者Rick Hodder
相关产品推荐
相关产品推荐

