Я работал над чем-то похожим. Хотя этот вопрос немного устарел, я надеюсь, он вам поможет.
Я начал как обычно - с создания события после сборки, которое вызывает FxCopCmd.
В моем случае мне потребовалось лишь небольшое подмножество кода, некоторые встроенные правила, а также некоторые пользовательские правила (в .dll)
Я использовал для этого файл проекта .fxcop - все настраивал так, как я хотел через графический интерфейс, а затем указывал FxCopCmd на файл проекта в событии после сборки.
По большей части это сработало замечательно, но нарушение правил выглядело только как предупреждение. Опция «Обрабатывать предупреждения как ошибки», похоже, не относится к этому, поэтому мне пришлось придумать другое решение.
То, что в конечном итоге мне больше всего помогло, было основано на сообщении в блоге, на которое я наткнулся.
Я изменил файл проекта, добавив в него два новых события.
У меня есть несколько дополнительных параметров и вещей для FxCop, но суть этого:
1: <PropertyGroup>
2: <FxCopResults>$(ProjectDir)obj\$(Configuration)\FxCopResults.xml</FxCopResults>
3: <PostBuildEvent>"%25ProgramFiles%25\Microsoft FxCop 10.0\FxCopCmd.exe" /file:"$(TargetPath)" /console /out:"$(ProjectDir)obj\$(ConfigurationName)\FxCopResults.xml"</PostBuildEvent>
4: </PropertyGroup>
5: <Target Name="BeforeBuild">
6: <Delete Files="$(FxCopResults)" ContinueOnError="true" />
7: </Target>
8: <Target Name="AfterBuild">
9: <Error Text="One or more FxCop warnings occurred." Condition="Exists('$(FxCopResults)')" />
10: </Target>
Общий поток такой:
- (ПРОЦЕСС СТРОИТЕЛЬСТВА ТРИГГЕРЕН)
- Перед началом сборки предыдущие результаты FxCop (если они существуют) удаляются.
- Событие перед сборкой запускается
- (НАЧАЛО СТРОИТЬ)
- Событие после сборки запускается (запускается FxCopCmd)
- После завершения пост-сборки, если есть результаты FxCop, возникает ошибка.
- (ПРОЦЕСС СТРОИТЕЛЬСТВА ЗАВЕРШЕН)
Теперь, если анализ FxCop сгенерировал, например, 4 нарушения правил, ваша сборка выдаст 4 предупреждения и 1 ошибку.
Надеюсь, это поможет.