2009-02-09 4 views
2

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

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

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

не будет делать. Что еще мне нужно делать?

ответ

2

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

<PropertyGroup> 
    <PostBuildEvent>"%25ProgramFiles%25\Microsoft FxCop 1.36\FxCopCmd.exe" /file:"$(TargetPath)" /console /searchgac</PostBuildEvent> 
</PropertyGroup> 
+0

Это сработало! Теперь я понимаю, почему люди обычно этого не делают. Это медленнее, чем стиль полицейского. Может быть, я должен запускать его при каждой фиксации вместо каждой сборки. –

+0

Вопрос: Это сработало из-за задач сообщества MSBuild, или ваше решение будет работать в одиночку? –

+0

Это решение работает без задач сообщества MSBuild –

2

Для выполнения 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> 

выход будет будет отображаться в консоли.

+0

Почему ваше решение отличается от AlexWalker? Его ответ также использует MSBuildCommunityTasks? –

+0

В этих решениях используется MSBuildCommunityTasks FxCop. –

Смежные вопросы