如何通过命令行在 MSBuild 中指定 CodeAnalysisRuleset
Posted
技术标签:
【中文标题】如何通过命令行在 MSBuild 中指定 CodeAnalysisRuleset【英文标题】:How to specify CodeAnalysisRules in MSBuild via commandline 【发布时间】:2009-10-23 01:21:52 【问题描述】:我希望能够在命令行 MSBuild 中指定代码分析规则(用于代码分析/FXCOP)。 项目文件中会有这样的内容:
<CodeAnalysisRules>-Microsoft.Globalization#CA1301;-Microsoft.Globalization#CA1302</CodeAnalysisRules>
所以我假设我使用这样的东西:
MSBuild.exe /property:RunCodeAnalysis=true /property:CodeAnalysisRules=-Microsoft.Globalization#CA1301
这很好,但是当我想添加另一个规则时,它不喜欢分号:
MSBuild.exe /property:RunCodeAnalysis=true /property:CodeAnalysisRules=-Microsoft.Globalization#CA1301;-Microsoft.Globalization#CA1302
MSBUILD : error MSB1006: Property is not valid. Switch: -Microsoft.Globalization#CA1302
如何指定多个规则?
我很高兴引用一个文件,但我不想只更改项目文件。
背景:我想为持续集成服务器(在我的例子中是 Hudson)创建一组规则。
注意:我正在运行 Visual Studio 2005
【问题讨论】:
【参考方案1】:试试这个:
msbuild /property:RunCodeAnalysis=true;CodeAnalysisRules=-Microsoft.Globalizati
on#CA1301%3B-Microsoft.Globalization#CA1302
【讨论】:
【参考方案2】:KMoraz 的建议似乎只适用于单一规则。我想要的是能够删除多个规则。我也希望能够为多个项目执行此操作。
我已经弄清楚我需要做什么:我维护一个“规则”文件,其中包含要用于每个项目的所有排除项。然后我在项目文件中引用这个文件。所以它看起来像这样:
项目文件:
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--the other project stuff here-->
<Import Project="X:\Hudson\jobs\bin\DefaultRules.targets" xmlns="" />
</Project>
排除文件(DefaultRules.targets):
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<RunCodeAnalysis>true</RunCodeAnalysis>
<CodeAnalysisRules>-Microsoft.Design#CA2210;-Microsoft.Design#CA1014;-Microsoft.Design#CA2210;-Microsoft.Naming#CA1705;-Microsoft.Globalization#CA1300;-Microsoft.Globalization#CA1301;-Microsoft.Globalization#CA1302;-Microsoft.Globalization#CA1303;-Microsoft.Globalization#CA1306;-Microsoft.Globalization#CA1304;-Microsoft.Globalization#CA1305</CodeAnalysisRules>
<TreatWarningsAsErrors>`false`</TreatWarningsAsErrors>
</PropertyGroup>
</Project>
我将排除文件存储在存储库中,每个解决方案和项目都使用它。很整洁:)
【讨论】:
以上是关于如何通过命令行在 MSBuild 中指定 CodeAnalysisRuleset的主要内容,如果未能解决你的问题,请参考以下文章