由于引用外部dll时出现一些元组错误,无法编译c#项目

Tom*_*Tom 1 .net c# tuples visual-studio-2010 sharp-snmp

当我尝试构建我的.net 4,c#项目时,我有一个错误.一切都很正常,但是当我添加一个外部参考给定的DLL,它停止工作,就不能建立,抛出这种类型的一些错误:

错误36型 'System.Tuple' 同时存在于 'C:\ Program Files文件\参考大会\微软\ Framework.NETFramework\V4.0\mscorlib.dll中' 和"C:\项目\ PROJECT1\ExternalRefernces\SharpSNMP\SharpSnmpLib .dll'C:\ Projects\Project1\CheckerStore.cs 17 21

注意,我没有对新库做任何事情,只是作为参考添加.有任何想法吗?

Oli*_*bes 8

您可以通过指定外部别名来解决此问题.在项目中选择SharpSNMP参考.在属性窗口中改变Aliasesglobal地说SharpSNMP.在你的代码中输入这个

extern alias SharpSNMP;

...

System.Tuple<T1,T2> sysTulpe;
SharpSNMP::System.Tuple<T1,T2> sharpTulpe;
Run Code Online (Sandbox Code Playgroud)

要么

extern alias SharpSNMP;

using SharpSystem = SharpSNMP::System;

...

System.Tuple<T1,T2> sysTulpe;
SharpSystem.Tuple<T1,T2> sharpTulpe;
Run Code Online (Sandbox Code Playgroud)

请参阅别名:克服名称冲突第2部分:extern别名

  • 从来不知道外部和走样.非常好学习. (2认同)

San*_*nen 6

您可以做的是将目标版本更改为3.5或在SharpSNMPLib中进行一些更改.源可以从这里这里获取.

您需要进行的更改特别是将System.Tuple类型移动到其他位置.

编辑:
我相信你已经添加了对预编译DLL的引用.不为框架版本4编译的DLL.您需要做的是下载源代码(请参阅上面的链接)并使用目标版本4编译项目.

为什么需要这样做是因为有条件构建参数取决于框架目标版本.SharpSNMPLib System.Tuple用于版本<= 3.5,框架System.Tuple用于版本> = 4.

编辑:

  • 使用框架System.Tuple和SharpSNMPLib.dll重现您的问题.

  • 成功构建针对第4版的SharpSNMPLib.

  • 使用框架System.Tuple和新的SharpSNMPLib.dll成功构建应用程序.