我想使用一些静态分析NuGet库(StyleCop,RefactorEssentials),为了强制执行规则,我想使用“将警告视为错误”项目级别选项。
使用MSBuild构建解决方案时,我也需要具有相同的行为。 我测试了这样的设置,在Visual Studio 2015中,构建失败了,但是 我无法使用MSBuild获得相同的行为。
我尝试运行以下MSBuild命令:MSBuild test.sln /t:clean,build /p:RunCodeAnalysis=true
但是构建提供0警告和错误。
此外,在使用上面的MSBuild命令构建解决方案之后,即使错误仍然存在并在“错误列表”视图中报告,Visual Studio也会报告成功的构建。我必须在Visual Studio中重建解决方案,使其因分析器错误而再次失败。
知道为什么我有这种行为,我应该怎样做才能从MSBuild获得相同的行为?
答案 0 :(得分:0)
原因是你没有指定Configuration和Platform,VS和MSBuild工具的构建和配置和平台不同,所以代码分析规则是不同的。
RunCodeAnalysis参数用于启用代码分析并使用特定规则运行代码分析(项目属性=>代码分析,不同的配置和平台具有不同的设置)。这样,您可以在项目文件(PropertyGroup)中添加true属性,或者直接为MSbuild命令指定此参数。
对于StyleCop代码分析:
<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
添加到项目文件的PropertyGroup或直接为MSBuild命令指定此参数Build(项目属性)的设置也基于Configuration和Platform。