如何重新映射汇编版本

时间:2011-08-24 12:13:21

标签: c# .net visual-studio-2008

从调试版本切换到发布版本会导致Visa设备停止工作并发出以下隐秘警告:

  

目标ResolveAssemblyReferences:

     

考虑app.config重新映射程序集“Ivi.Visa.Interop,   Culture = neutral,PublicKeyToken = a128c98f1d7717c1“from Version   “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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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},而不是装配绑定。我对这个选项感到高兴,看起来更简单。