引用外部DLL时不能编译,因为一些错误的元组C#项目(Can't compile c# pr

2019-10-16 18:43发布

我有一个错误,当我尝试建立我的.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

请注意,我没有新的库做任何事,只是增加了作为参考。 有任何想法吗?

Answer 1:

你可以做的是目标版本要么改变到3.5或使在SharpSNMPLib一些变化。 来源可以是来自牵强这里或点击这里 。

你所需要的变化,使专门移动System.Tuple型别的地方。

编辑:
我相信你已经添加到precomplied DLL的引用。 这不是编译框架版本4,你需要做的DLL是下载源代码(见上面的链接)和编译目标版本4的项目。

为什么你需要做的,这是因为有根据的框架目标版本有条件的编译参数。 所述SharpSNMPLib System.Tuple用于版本<= 3.5和框架System.Tuple用于版本> = 4。

编辑:

  • 转载使用框架System.Tuple和SharpSNMPLib.dll您的问题。

  • 成功构建SharpSNMPLib版本4的目标。

  • 成功地建立使用框架System.Tuple和新SharpSNMPLib.dll应用。



Answer 2:

您可以通过指定外部别名解决这个问题。 选择项目的SharpSNMP参考。 在属性窗口中改变AliasesglobalSharpSNMP 。 在你的代码类型此

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部分:外部别名



Answer 3:

只需转到CheckerStore.cs文件,行1721(如果我是对的)。 找到Tuple类,并使用它的全名引用它。



Answer 4:

由于某种原因,这个库重新实现了一些系统类型。 可能的原因是使代码使用旧版本的框架时,是源代码级兼容。

很可能是这个SharpSNMP库4.0框架工作的一个版本。 检查您是否已经在你的源代码树纠正。 请与你所需要的给定的框架版本和如何使用该组件的版本,建议做这件事的方式库的创造者。



文章来源: Can't compile c# project because of some tuple error when referencing an external dll