RunCodeAnalysis = true не работает в командной строке (MSBuild)

Я пытаюсь получить msbuild для вывода информации анализа кода, как это происходит в VS. У меня есть конфигурация для моего проекта под названием "CodeAnalysis" в VS, который настроен для запуска анализа кода при сборке (с минимальным набором правил). В любом случае, это отлично работает в VS, но когда я запускаю msbuild из командной строки, он показывает только основные предупреждения о сборке и вообще не выполняет анализ кода. Кто-нибудь знает, почему это происходит?

Конфигурация в файле проекта:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'CodeAnalysis|AnyCPU'">
<OutputPath>bin\</OutputPath>
<CodeAnalysisRuleSet>C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\Rule Sets\MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<RunCodeAnalysis>true</RunCodeAnalysis>

Командная строка:

msbuild Solution.sln /p:Configuration=CodeAnalysis /t:Rebuild

Я также пробовал:

msbuild Solution.sln /p:RunCodeAnalysis=true /t:Rebuild

Ответ 1

По умолчанию MSBuild использует значение, настроенное в файле проекта, но вы можете переопределить его в командной строке msbuild, используя аргумент

/p:RunCodeAnalysis=true

всегда выполнять анализ кода. И наоборот, используйте

/p:RunCodeAnalysis=false

чтобы отключить анализ кода.

См. также:

Ответ 2

Вам нужно, чтобы Visual Studio была установлена ​​на компьютере. Есть много сценариев, которые включены через строку csproj:

Поскольку у вас установлен VS (надлежащей версии), он будет включать в себя файл целей FxCop и начнет анализ кода для вас.

Ответ 3

Как только я столкнулся с той же проблемой, я начал с получения (overly) подробного журнала и отправил его в файл, который я мог проверить:

msbuild.exe ProjectFile.csproj /v:diag > bld.log

В этом файле я заметил, что цель анализа кода была пропущена, потому что RunCodeAnalysisOnThisProject оценивается как true. Итак, в csproj я включил следующую строку в первую группу свойств:

<RunCodeAnalysisOnThisProject>true</RunCodeAnalysisOnThisProject>

который сделал это для меня.