2009-02-09 12 views
2

Je viens d'apprendre comment intégrer StyleCop dans Visual Studio. Maintenant, il exécute chaque build et ses erreurs apparaissent comme des avertissements. Excelent!FxCop sur la construction (Visual Studio 2008 Professional)

Maintenant, je veux juste faire la même chose avec FxCop, mais même l'installation des tâches communautaires MSBuild et en ajoutant au fichier proj:

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

ne le fera pas. Qu'est-ce que je dois faire d'autre?

Répondre

2

Essayez de mettre ce droit avant </Project> dans votre csproj/fichier vbproj:

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

Ça a marché! Maintenant, je me rends compte pourquoi les gens ne le font généralement pas. C'est plus lent que le style flic. Peut-être que je devrais l'exécuter à chaque commit au lieu de chaque build. –

+0

Question: Cela a fonctionné à cause des tâches communautaires de MSBuild, ou votre solution fonctionnerait-elle seule? –

+0

Cette solution fonctionne sans les tâches de la communauté MSBuild –

2

Pour exécuter FXCop après la compilation, utilisez la tâche FXCop de MSBuildCommunityTasks dans la cible 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> 

La sortie être montré dans la console.

+0

Pourquoi votre solution est-elle différente de celle d'AlexWalker? Sa réponse utilise également MSBuildCommunityTasks? –

+0

Cette solution utilise MSBuildCommunityTasks FxCop. –