如何抑制“发现不同版本之间的冲突”警告?

5
在一个项目中,我有以下参考布局:
References
+- AssemblyA 6.7.6643.0
+- AssemblyB
|  \- AssemblyA 7.0.0.0
\- AssemblyC
   \- AssemblyA 7.0.0.0

AssemblyB和AssemblyC是NuGet引用,没有降级。由于我控制之外的情况,升级AssemblyA不是一个选项。但我收到了这个警告:

在"AssemblyA"的不同版本之间发现冲突,无法解决这些引用冲突,当日志详细度设置为详细时,这些引用冲突会在构建日志中列出。

所以我就按照提示操作,下面是输出结果:

"AssemblyA, Version=6.7.6643.0"和"AssemblyA, Version=7.0.0.0"之间存在冲突。 "AssemblyA, Version=6.7.6643.0"被选择是因为它是主要的,而"AssemblyA, Version=7.0.0.0"不是。 依赖于"AssemblyA, Version=6.7.6643.0"的引用 [AssemblyA.dll]。 AssemblyA.dll 引起"AssemblyA.dll"引用的项目文件项。 AssemblyA, Version=6.7.6643.0 依赖于"AssemblyA, Version=7.0.0.0"的引用 []。 AssemblyB.dll 引起"AssemblyB.dll"引用的项目文件项。 AssemblyB, Version=7.0.0.0 AssemblyC.dll 引起"AssemblyC.dll"引用的项目文件项。 AssemblyC, Version=9.0.0.0

它选择了我想要的版本,但我仍然在Visual Studio中收到警告。所以我更新了app.config绑定重定向,希望能消除警告:

<dependentAssembly>
  <assemblyIdentity name="AssemblyA" publicKeyToken="..." culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="6.7.6643.0" />
</dependentAssembly>

但是警告仍然存在。我已经确认,如果我将AssemblyA升级到7.0.0.0,它会消除警告。但正如我之前所说,由于其他原因超出我的控制范围,我现在无法升级此程序集。

有没有办法仅针对这一特定实例抑制此警告?

谢谢

2个回答

14

实际上,有一种方法可以在最近版本的MSBuild中通过将警告视为消息来抑制警告,方法是编辑您的.csproj文件。

例如...

<PropertyGroup> 
  <MSBuildWarningsAsMessages>
    $(MSBuildWarningsAsMessages);MSB3274;MSB3275;MSB3268
  </MSBuildWarningsAsMessages>
</PropertyGroup>

2
这是肯定的答案,谢谢你为我解决了这个烦恼! - dadhi
有人知道哪个版本的Visual Studio / msBuild支持这个吗? - Eric Brown - Cal
有人知道哪些版本的Visual Studio / msBuild支持这个吗? - undefined
支持在VS19和VS22中使用。可能也支持早期版本。 - stoj
支持在VS19和VS22中。可能也支持较早的版本。 - undefined
无法在MSB3277和msbuild 16.11.2+f32259642上工作。 - undefined

0

1.这个警告似乎是在编译项目时出现的,编译器会对使用哪个版本的.dll感到困惑,因此会抛出MSB3277警告。通常情况下,我们可以通过升级旧版本或降级新版本来解决此警告。但在这种情况下,似乎没有有效的方法来解决此警告。

2.此外,有时我们可以通过设置某些属性来抑制警告,但对于带有MSB前缀的警告,因为MSBuild引发了这些警告,目前没有有效的方法来抑制MSB警告。

特别是对于MSB3277,我已经尝试使用vs2017的nowarn、#pargma、proj中的属性进行测试,但不幸的是,它们都不起作用。我们可以在这里找到类似的问题:如何抑制特定的MSBuild警告 抑制MSB4126

因此,恐怕我们目前没有有效的方法来抑制MSB3277。对此造成的不便,我们深表歉意。


9
“除非你100%确定没有解决方案,否则‘我没有答案’是可以被接受的回答。” - Nissim

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