views:

1638

answers:

2

I just learned how to integrate StyleCop into Visual Studio. Now it runs every build and its errors appears as warnings. Excelent!

Now I just want to do the same thing with FxCop, but even installing MSBuild Community Tasks and adding to the proj file:

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

Won't do. What else I have to do?

+2  A: 

Try putting this right before </Project> in your csproj/vbproj file:

<PropertyGroup>
    <PostBuildEvent>"%25ProgramFiles%25\Microsoft FxCop 1.36\FxCopCmd.exe" /file:"$(TargetPath)" /console /searchgac</PostBuildEvent>
</PropertyGroup>
AlexWalker
It worked! Now I realize why people usually don't do this. It's slower than style cop. Maybe I should run it at each commit instead of each build.
Jader Dias
Question: It worked because of MSBuild Community Tasks, or your solution would work alone?
Jader Dias
This solution works without MSBuild Community Tasks
madgnome
+2  A: 

For executing Fxcop after build, use the Fxcop task of MSBuildCommunityTasks in AfterBuild target:

<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>

The output will be shown in the console.

madgnome
Why is your solution different from AlexWalker's? His response also uses MSBuildCommunityTasks?
Jader Dias
This solutions uses the MSBuildCommunityTasks FxCop.
madgnome