Age*_*dum 5 .net msbuild visual-studio-express visual-studio visual-studio-2017
在一个项目中我有以下参考布局:
References
+- AssemblyA 6.7.6643.0
+- AssemblyB
| \- AssemblyA 7.0.0.0
\- AssemblyC
\- AssemblyA 7.0.0.0
Run Code Online (Sandbox Code Playgroud)
AssemblyB 和 AssemblyC 是没有降级的 NuGet 引用。由于我无法控制的情况,升级 AssemblyA 不是一个选择。但我收到这个警告:
发现“AssemblyA”不同版本之间存在无法解决的冲突。当日志详细程度设置为详细时,这些引用冲突会在构建日志中列出。
所以我就这样做了,这就是输出:
“AssemblyA,版本=6.7.6643.0”和“AssemblyA,版本=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,版本=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>
Run Code Online (Sandbox Code Playgroud)
但警告仍然存在。我已经确认,如果我将 AssemblyA 升级到 7.0.0.0,它会导致警告消失。但正如我之前所说,由于我无法控制的其他原因,我现在无法升级此程序集。
是否有办法仅针对这一特定情况抑制此警告?
谢谢
sto*_*toj 15
实际上,有一种方法可以通过编辑 .csproj 将警告视为消息来抑制更新版本的 MSBuild 的 MSBuild 警告。
例如..
<PropertyGroup>
<MSBuildWarningsAsMessages>
$(MSBuildWarningsAsMessages);MSB3274;MSB3275;MSB3268
</MSBuildWarningsAsMessages>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
1.这个警告似乎是在编译器编译项目时出现的,它会混淆使用哪个版本的.dll,从而抛出MSB3277警告。通常,我们可以通过升级旧版本或降级新版本来解决此警告。但在这种情况下,似乎没有有效的方法来解决此警告。
\n\n2.什么\xe2\x80\x99s更多,有时我们可以通过设置一些属性来抑制警告,但这似乎不适用于MSB警告,因为带有MSB前缀的警告是由MSBuild抛出的,并且当前没有有效的方法来抑制MSB警告。
\n\n特别是对于 MSB3277,我通过 nowarn、#pargma、proj 中的属性使用 vs2017 进行测试,但不幸的是,它不起作用。 \n我们可以在这里找到类似的问题:如何抑制特定的 MSBuild 警告\n抑制 MSB4126
\n\n所以,恐怕我们目前还没有有效的方法来抑制MSB3277。对于由此带来的不便,我们深表歉意。
\n| 归档时间: |
|
| 查看次数: |
3037 次 |
| 最近记录: |