Как указать CodeAnalysisRules в MSBuild через командную строку

Я хочу иметь возможность указать Code AnalysisRules в командной строке 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

Как я могу указать более одного правила?

Я рад ссылаться на файл, но я не хочу просто изменять файлы проекта.

Backgroud: я хочу создать набор правил для сервера непрерывной интеграции (Hudson в моем случае).

Примечание: я использую Visual Studio 2005

2 ответа

Попробуй это:

msbuild /property:RunCodeAnalysis=true;CodeAnalysisRules=-Microsoft.Globalizati
on#CA1301%3B-Microsoft.Globalization#CA1302

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> ложный </TreatWarningsAsErrors>
</PropertyGroup>
</Project>

Я храню файл исключения в репозитории, и каждое решение и проект используют его. Довольно аккуратно:)

Другие вопросы по тегам