如何抑制 'Found conflicts between different versions of' 警告?
How to suppress 'Found conflicts between different versions of' warning?
在一个项目中我有以下参考布局:
References
+- AssemblyA 6.7.6643.0
+- AssemblyB
| \- AssemblyA 7.0.0.0
\- AssemblyC
\- AssemblyA 7.0.0.0
AssemblyB 和 AssemblyC 是没有降级的 NuGet 引用。由于我无法控制的情况,升级 AssemblyA 不是一种选择。但我收到此警告:
Found conflicts between different versions of "AssemblyA" that could
not be resolved. These reference conflicts are listed in the build
log when log verbosity is set to detailed.
所以我就这样做了,这是输出:
There was a conflict between "AssemblyA, Version=6.7.6643.0" and
"AssemblyA, Version=7.0.0.0".
"AssemblyA, Version=6.7.6643.0" was chosen because it was primary and "AssemblyA, Version=7.0.0.0" was not.
References which depend on "AssemblyA, Version=6.7.6643.0" [AssemblyA.dll].
AssemblyA.dll
Project file item includes which caused reference "AssemblyA.dll".
AssemblyA, Version=6.7.6643.0
References which depend on "AssemblyA, Version=7.0.0.0" [].
AssemblyB.dll
Project file item includes which caused reference "AssemblyB.dll".
AssemblyB, Version=7.0.0.0
AssemblyC.dll
Project file item includes which caused reference "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,它会导致警告消失。但正如我之前所说,由于我无法控制的其他原因,我现在无法升级此程序集。
有没有办法仅针对这一特定实例抑制此警告?
谢谢
1.This 编译器在编译项目时似乎出现了警告,它会混淆使用哪个版本的.dll,从而抛出MSB3277 警告。通常,我们可以通过升级旧版本或降级新版本来解决此警告。但在这种情况下,似乎没有有效的方法来解决这个警告。
2.What更多,有时我们可以通过设置一些属性来抑制警告,但这似乎不适用于 MSB 警告,因为带有 MSB 前缀的警告由 MSBuild 抛出并且没有当前抑制 MSB 警告的有效方法。
特别是对于 MSB3277,我在 proj 中通过 nowarn、#pargma、属性 使用 vs2017 进行了测试,但不幸的是,它不起作用。
我们可以在这里找到类似的问题:How to suppress specific MSBuild warning
Suppress MSB4126
所以,恐怕我们目前没有有效的方法来抑制MSB3277。对于给您带来的不便,我们深表歉意。
实际上,有一种方法可以通过编辑 .csproj 将警告视为消息来抑制 MSBuild 更新版本的 MSBuild 警告。
例如..
<PropertyGroup>
<MSBuildWarningsAsMessages>
$(MSBuildWarningsAsMessages);MSB3274;MSB3275;MSB3268
</MSBuildWarningsAsMessages>
</PropertyGroup>
在一个项目中我有以下参考布局:
References
+- AssemblyA 6.7.6643.0
+- AssemblyB
| \- AssemblyA 7.0.0.0
\- AssemblyC
\- AssemblyA 7.0.0.0
AssemblyB 和 AssemblyC 是没有降级的 NuGet 引用。由于我无法控制的情况,升级 AssemblyA 不是一种选择。但我收到此警告:
Found conflicts between different versions of "AssemblyA" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.
所以我就这样做了,这是输出:
There was a conflict between "AssemblyA, Version=6.7.6643.0" and "AssemblyA, Version=7.0.0.0". "AssemblyA, Version=6.7.6643.0" was chosen because it was primary and "AssemblyA, Version=7.0.0.0" was not. References which depend on "AssemblyA, Version=6.7.6643.0" [AssemblyA.dll]. AssemblyA.dll Project file item includes which caused reference "AssemblyA.dll". AssemblyA, Version=6.7.6643.0 References which depend on "AssemblyA, Version=7.0.0.0" []. AssemblyB.dll Project file item includes which caused reference "AssemblyB.dll". AssemblyB, Version=7.0.0.0 AssemblyC.dll Project file item includes which caused reference "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,它会导致警告消失。但正如我之前所说,由于我无法控制的其他原因,我现在无法升级此程序集。
有没有办法仅针对这一特定实例抑制此警告?
谢谢
1.This 编译器在编译项目时似乎出现了警告,它会混淆使用哪个版本的.dll,从而抛出MSB3277 警告。通常,我们可以通过升级旧版本或降级新版本来解决此警告。但在这种情况下,似乎没有有效的方法来解决这个警告。
2.What更多,有时我们可以通过设置一些属性来抑制警告,但这似乎不适用于 MSB 警告,因为带有 MSB 前缀的警告由 MSBuild 抛出并且没有当前抑制 MSB 警告的有效方法。
特别是对于 MSB3277,我在 proj 中通过 nowarn、#pargma、属性 使用 vs2017 进行了测试,但不幸的是,它不起作用。 我们可以在这里找到类似的问题:How to suppress specific MSBuild warning Suppress MSB4126
所以,恐怕我们目前没有有效的方法来抑制MSB3277。对于给您带来的不便,我们深表歉意。
实际上,有一种方法可以通过编辑 .csproj 将警告视为消息来抑制 MSBuild 更新版本的 MSBuild 警告。
例如..
<PropertyGroup>
<MSBuildWarningsAsMessages>
$(MSBuildWarningsAsMessages);MSB3274;MSB3275;MSB3268
</MSBuildWarningsAsMessages>
</PropertyGroup>