C#编译器警告1685
因此,(似乎)出乎意料地,我的项目开始出现编译器警告1685: 预定义的类型 'System.Runtime.CompilerServices.ExtensionAttribute' 在中的多个程序集中定义 全球别名;使用定义 来自“c:\Program Files\Reference” Assemblies\Microsoft\Framework\v3.5\System.Core.dll' 困惑的是,我研究了MSDN文章以找出其原因。以下是我找到的信息: Visual C#参考:错误和错误 警告编译器警告(级别1) CS1685 预定义类型的错误消息 “System.type name”是在中定义的 全局数据库中的多个程序集 别名使用“文件”中的定义 名字' 当预定义的 system.int32等系统类型为 在两个程序集中找到。单程 如果您正在引用,则可能发生这种情况 来自两个不同地方的mscorlib, 例如尝试运行.Net 框架版本1.0和1.1 肩并肩 编译器将使用该定义 仅从其中一个程序集。这个 编译器只搜索全局别名, 不搜索已定义的库 /参考资料。如果您已经指定 /Nostlib,编译器将进行搜索 为对象,并在将来开始 在中对预定义类型的所有搜索 找到对象的文件 现在我真的抓狂了C#编译器警告1685,c#,.net,compiler-warnings,C#,.net,Compiler Warnings,因此,(似乎)出乎意料地,我的项目开始出现编译器警告1685: 预定义的类型 'System.Runtime.CompilerServices.ExtensionAttribute' 在中的多个程序集中定义 全球别名;使用定义 来自“c:\Program Files\Reference” Assemblies\Microsoft\Framework\v3.5\System.Core.dll' 困惑的是,我研究了MSDN文章以找出其原因。以下是我找到的信息: Visual C#参考:错误和错误 警
- 一个C#类库DLL,提供封装数据库访问的基本功能。此DLL引用以下组件:
- 系统
- 系统核心
- 系统核心数据
- 系统数据
- System.Data.DataSetExtensions
- System.Data.OracleClient
- 系统图
- System.Windows.Forms
- Xml
- System.Xml.Linq
- 提供UI的C#Windows窗体应用程序。此应用程序引用以下组件:
- 清除码
- CleanCodeControl(这两个控件都提供语法编辑器支持,并且是针对.NET3.5本地构建的)
- 林克布里奇
- Framework(上面的类库)
- 系统
- 系统核心
- 系统数据
- System.Data.DataSetExtensions
- System.Data.OracleClient
- 系统部署
- 系统设计
- 系统图
- System.Windows.Forms
- Xml
- System.Xml.Linq
如果您需要进一步的信息,请告诉我,我很乐意提供。林克桥让我立即产生怀疑。其全部目的是为2.0用户提供扩展属性/方法等。如果您有3.5(System.Core.dll),不要使用LINQBridge。如果您确实需要3.5中的LINQBridge,原因不明(我想不出),那么您可能必须使用外部别名。但是我真的怀疑你需要它 马克几乎肯定是对的。这里有一个验证的方法
如果它出现在System.Core之外的任何地方,那么你就知道它来自哪里 此问题的另一个解决方案是为整个程序集使用全局别名:
参考->属性->别名->用其他内容替换“全局”另一种简单的验证方法: 在代码中,暂时在某个地方使用该类。 例如: 生成时,这将生成错误: 存在类型“System.Runtime.CompilerServices.ExtensionAttribute” 在两个'c:\Program Files\Reference'中 程序集\Microsoft\Framework\v3.5\System.Core.dll'和
并立即向您显示导致冲突的两个源。仅供参考:我遇到了相同的问题,并且能够通过使用Resharper的“优化引用”命令,然后删除所有未使用的引用来解决它。不完全确定为什么会这样,但它确实起了作用。此问题的另一个解决方案=>右键单击项目->属性->构建->将警告视为错误->无请参见以下内容:建议您关闭此问题。这是一个完全重复的问题。顺便说一句,这确实是LinqBridge造成的,在allI,你不再需要它,我搜索了警告号码,但找不到任何包含警告号码的问题;我为复制品道歉。顺便说一句,林克布里奇实际上是个问题。非常感谢。说得好。我已编辑链接问题以包含它。我意外地用.NET 3.5而不是4.5安装IIS,从而触发了此错误。修正是在控制面板的“添加功能…”中添加4.5。酷。事实上,我甚至不需要构建,只要我将这一行粘贴到代码文件中,intellisense警告就告诉了我需要知道的一切!这是一个更好的一般性答案。终于!一种找出导致此警告的实际文件的方法。我只是在我的项目目录中使用了
grep-r ExtensionAttribute*
,并以这种方式找到了罪魁祸首。我绝不允许这样做。正确的代码没有警告。这感觉就像把它扫到地毯下面。这一警告可以因此得到解决。
System.Runtime.CompilerServices.ExtensionAttribute x = null;