如何重新映射程序集版本

12

从调试版本切换到发布版本会导致 Visa 设备停止工作,并出现以下晦涩的警告:

目标 ResolveAssemblyReferences:

考虑使用应用程序配置文件重新映射程序集“Ivi.Visa.Interop,Culture=neutral, PublicKeyToken=a128c98f1d7717c1”的版本“3.0.0.0”[]至版本“3.2.0.0”[dll\Ivi.Visa.Interop.dll]以解决冲突并消除警告。 C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : 警告 MSB3247:在相同的依赖程序集的不同版本之间发现冲突。

VS2008 项目中的 Ivi.Visa.Interop 引用属性表明该 dll 版本为 3.2.0.0。 根据警告提供的建议,重新映射程序集版本的步骤是什么?


2个回答

1

警告“在同一依赖程序集的不同版本之间发现冲突。”意味着您的项目中有多个程序集引用了不同的COM互操作存根 - 我建议选择一个(假设库供应商没有提供主要互操作程序集),并更改所有引用以引用该互操作程序集(而不是将对COM库的引用添加到任何位置)


1
我遇到的情况是这样的: {Final Class Library}依赖于{Dependent Class Library},后者又依赖于{Referenced DLL}。但{Referenced DLL}有多个GAC PublicKeyToken匹配项。
因此,在编译{Final Class Library}时,它忽略了{Dependent Class Library}中引用的版本,并使用了最高的Version=值。这导致输出出现了No way to resolve conflict betweenChoosing ... arbitrarily等提示。
为了解决这个问题,我在{Final Class Library}中添加了对{Referenced DLL}的引用,而不是进行程序集绑定。我认为这个方法更简单,也更令人满意。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接