FxCop при сборке (Visual Studio 2008 Professional)

Я только что научился интегрировать StyleCop в Visual Studio. Теперь он запускает каждую сборку, и ее ошибки отображаются в виде предупреждений. Отлично!

Теперь я просто хочу сделать то же самое с FxCop, но даже установить MSBuild Community Tasks и добавить в файл proj:

 <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

Не пойдет. Что мне еще делать?


person Jader Dias    schedule 09.02.2009    source источник


Ответы (2)


Попробуйте поместить это прямо перед </Project> в вашем файле csproj / vbproj:

<PropertyGroup>
    <PostBuildEvent>"%25ProgramFiles%25\Microsoft FxCop 1.36\FxCopCmd.exe" /file:"$(TargetPath)" /console /searchgac</PostBuildEvent>
</PropertyGroup>
person Bret Walker    schedule 09.02.2009
comment
Это сработало! Теперь я понимаю, почему люди обычно этого не делают. Это медленнее, чем у стильного полицейского. Возможно, мне стоит запускать его при каждой фиксации, а не при каждой сборке. - person Jader Dias; 09.02.2009
comment
Вопрос: Это сработало из-за задач сообщества MSBuild, или ваше решение будет работать в одиночку? - person Jader Dias; 09.02.2009

Для выполнения Fxcop после сборки используйте задачу Fxcop из MSBuildCommunityTasks в цели AfterBuild:

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

<Target Name="AfterBuild">

  <FxCop TargetAssemblies="@(OutputAssemblies)"
         RuleLibraries="@(FxCopRuleAssemblies)" 
         DependencyDirectories="$(MSBuildCommunityTasksPath)"
         FailOnError="False"
         ApplyOutXsl="True"
         OutputXslFileName="C:\Program Files\Microsoft FxCop 1.32\Xml\FxCopReport.xsl"
         DirectOutputToConsole="true"/>

</Target>

Результат будет показан в консоли.

person Julien Hoarau    schedule 09.02.2009
comment
Чем ваше решение отличается от AlexWalker? В его ответе также используется MSBuildCommunityTasks? - person Jader Dias; 09.02.2009