|
因此,(似乎)出乎意料的是,我的项目开始收到编译器警告1685:
预定义类型
'System.Runtime.CompilerServices.ExtensionAttribute'
在中的多个程序集中定义
全局别名;使用定义
来自'C:\Program Files\Reference
程序集\microsoft\framework\v3.5\system.core.dll'
困惑的是,我研究了msdn的文章来找出它的原因。以下是我发现的信息:
Visual C参考:错误和
警告编译器警告(级别1)
CS1685
错误消息预定义类型
“system.type name”在中定义
全局中的多个程序集
别名;使用“文件”中的定义
姓名
当
System.Int32等系统类型是
在两个程序集中找到。这边走
如果您正在引用
来自两个不同地方的mscorlib,
例如尝试运行.NET
框架版本1.0和1.1
并排。
编译器将使用定义
仅来自其中一个程序集。这个
编译器只搜索全局别名,
不搜索定义的库
/参考。如果您已指定
/nostdlib,编译器将搜索
为对象,并在未来开始
在中搜索预定义类型
找到对象的文件。
现在我真的抓伤了头。
我没有跑两个不同的
.NET框架的版本
(除非你数到2.0和3.5)。
我没有提到任何奇怪的事情
可能使我
可疑。
我不记得对我的应用程序做过任何会刺激这种变化的更改。
我已经验证了所有组件都以.NET Framework v2.0.50727版本为目标。
我愿意接受关于如何纠正这个问题的建议或想法。我把警告当成错误,这让我发疯。
真正让我恼火的是我不知道为什么会发生这种事。发生的事情应该有明确的原因,我应该知道为什么会发生。如果我不能解释,我就无法准确地补救。猜测永远不会令人满意。
该应用程序很简单,由类库和Windows窗体应用程序组成。
提供封装数据库访问的基本功能的C类库DLL。此dll引用以下组件:
系统
系统核心
System.Core.数据
系统数据
system.data.datasetensions
system.data.oracle客户端
系统图
System.Windows.窗体
命名空间
系统.xml.linq
提供用户界面的C Windows窗体应用程序。此应用程序引用以下组件:
清洁代码
CleancodeControls(这两个都提供语法编辑器支持,并在本地针对.NET 3.5构建)。
林肯桥
framework(上面的类库)
系统
系统核心
系统数据
system.data.datasetensions
system.data.oracle客户端
系统部署
系统设计
系统图
System.Windows.窗体
命名空间
系统.xml.linq
如果您需要进一步的信息,请告诉我,我很乐意提供。
最佳答案
Linqbridge让我立刻产生了怀疑。这样做的全部目的是为2.0用户提供扩展属性/方法等。如果您有3.5(system.core.dll),请不要使用LinqBridge。如果您确实需要3.5版的LinqBridge,原因不明(我想不出),那么您可能需要使用外部别名。但我真的怀疑你需要它!