我有一个错误,当我尝试建立我的.NET 4,C#项目。 一切都很正常,但是当我添加一个外部参考给定的DLL,它停止工作,就不能建立,抛出这种类型的一些错误:
错误36型 'System.Tuple' 同时存在于 'C:\ Program Files文件\参考大会\微软\ Framework.NETFramework \ V4.0 \ mscorlib.dll中' 和“C:\项目\ PROJECT1 \ ExternalRefernces \ SharpSNMP \ SharpSnmpLib的.dll” C:\项目\ PROJECT1 \ CheckerStore.cs 17 21
请注意,我没有新的库做任何事,只是增加了作为参考。 有任何想法吗?
你可以做的是目标版本要么改变到3.5或使在SharpSNMPLib一些变化。 来源可以是来自牵强这里或点击这里 。
你所需要的变化,使专门移动System.Tuple型别的地方。
编辑:
我相信你已经添加到precomplied DLL的引用。 这不是编译框架版本4,你需要做的DLL是下载源代码(见上面的链接)和编译目标版本4的项目。
为什么你需要做的,这是因为有根据的框架目标版本有条件的编译参数。 所述SharpSNMPLib System.Tuple用于版本<= 3.5和框架System.Tuple用于版本> = 4。
编辑:
您可以通过指定外部别名解决这个问题。 选择项目的SharpSNMP参考。 在属性窗口中改变Aliases
从global
说SharpSNMP
。 在你的代码类型此
extern alias SharpSNMP;
...
System.Tuple<T1,T2> sysTulpe;
SharpSNMP::System.Tuple<T1,T2> sharpTulpe;
要么
extern alias SharpSNMP;
using SharpSystem = SharpSNMP::System;
...
System.Tuple<T1,T2> sysTulpe;
SharpSystem.Tuple<T1,T2> sharpTulpe;
见别名:解决命名冲突第2部分:外部别名
只需转到CheckerStore.cs
文件,行1721(如果我是对的)。 找到Tuple
类,并使用它的全名引用它。
由于某种原因,这个库重新实现了一些系统类型。 可能的原因是使代码使用旧版本的框架时,是源代码级兼容。
很可能是这个SharpSNMP库4.0框架工作的一个版本。 检查您是否已经在你的源代码树纠正。 请与你所需要的给定的框架版本和如何使用该组件的版本,建议做这件事的方式库的创造者。
文章来源: Can't compile c# project because of some tuple error when referencing an external dll