MSB3277的错误警告:发现无法解析的相同从属程序集的不同版本之间存在冲突

时间:2014-05-14 18:43:43

标签: msbuild

在我修正了这个警告之后,我怎么能把它变成错误,所以它不会再次滑入?

msbuild /p:TreatWarningsAsErrors无法正常工作

3 个答案:

答案 0 :(得分:9)

没有快乐的答案给你这里。 TreatWarningsAsErrors属性仅影响C#和VB.NET编译器(而不是C ++),它确定了/warnaserror命令行选项的值。

但MSB3277由MSBuild任务ResolveAssemblyReference生成,其内部LogResult()方法生成诊断。该类唯一的属性有助于将警告有条件地视为WarnOrErrorOnTargetArchitectureMismatch,而不是您要实现的目标。您可以使用反编译器查看自己,查看C:\ Program Files(x86)\ MSBuild \ 12.0 \ Bin \ Microsoft.Build.Tasks.v12.0.dll。本地化MSB3277消息的资源名称是“ResolveAssemblyReference.FoundConflicts”。

因此,在这里取得进展的唯一方法是编写一个小实用程序来解析日志文件并查找警告。

答案 1 :(得分:1)

通过软件包管理器控制台运行Update-Package,这将修复MSB3277,它将所有软件包及其随附的所有相关程序集重新安装到最高版本。

有关官方文档的更多信息https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages

答案 2 :(得分:0)

您可以使用通用机制 MSBuildTreatWarningsAsErrors<MSBuildWarningsAsErrors>MSB3277</MSBuildWarningsAsErrors>(在 #1928 中引入)来完成此操作。