在一个项目中,我具有以下参考布局:
References
+- AssemblyA 6.7.6643.0
+- AssemblyB
| \- AssemblyA 7.0.0.0
\- AssemblyC
\- AssemblyA 7.0.0.0
AssemblyB和AssemblyC是没有降级的NuGet引用。由于我无法控制的情况,不能选择升级AssemblyA。但我得到这个警告:
发现不同版本的“ AssemblyA”之间可能存在冲突 无法解决。这些参考冲突在构建中列出 将日志详细程度设置为“详细”时记录日志。
所以我做到了,这就是输出:
“ AssemblyA,版本= 6.7.6643.0”与 “ AssemblyA,版本= 7.0.0.0”。 选择了“ AssemblyA,版本= 6.7.6643.0”,因为它是主要版本,而不是“ AssemblyA,版本= 7.0.0.0”。 依赖于“ AssemblyA,版本= 6.7.6643.0” [AssemblyA.dll]的引用。 AssemblyA.dll 项目文件项包括引起引用“ AssemblyA.dll”的文件。 AssemblyA,版本= 6.7.6643.0 依赖于“ AssemblyA,版本= 7.0.0.0” []的引用。 AssemblyB.dll 项目文件项包括引起引用“ AssemblyB.dll”的文件。 AssemblyB,版本= 7.0.0.0 AssemblyC.dll 项目文件项包括引起引用“ AssemblyC.dll”的文件。 AssemblyC,版本= 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,它将导致警告消失。但是正如我之前所说,由于其他无法控制的原因,我现在无法升级此程序集。
是否仅针对该特定实例抑制该警告?
谢谢
答案 0 :(得分:2)
实际上,有一种方法可以通过编辑 .csproj 将警告视为消息来抑制更新版本的 MSBuild 的 MSBuild 警告。
例如..
<PropertyGroup>
<MSBuildWarningsAsMessages>
$(MSBuildWarningsAsMessages);MSB3274;MSB3275;MSB3268
</MSBuildWarningsAsMessages>
</PropertyGroup>
答案 1 :(得分:0)
1。当编译器编译项目时,似乎会出现此警告,它将对使用哪个版本的.dll感到困惑,从而引发MSB3277警告。通常,我们可以通过升级旧版本或降级新版本来解决此警告。但是在这种情况下,似乎没有解决此警告的有效方法。
2。此外,有时我们可以通过设置一些属性来抑制警告,但这似乎不适用于MSB警告,因为带有MSB前缀的警告由MSBuild抛出,并且目前没有有效的方法来抑制MSB警告。
特别是对于MSB3277,我通过nowarn,#pargma,proj中的属性对vs2017进行了测试,但是不幸的是,它不起作用。 我们可以在这里找到类似的问题:How to suppress specific MSBuild warning Suppress MSB4126
因此,恐怕我们目前没有有效的方法来抑制MSB3277。很抱歉给您带来不便。