In a previous post, I laid out our standard structure for MSBuild with Cruise Control. Now I will show the details of FxCop and NUnit.
Now you want to run FxCop:
<Target Name="FxCop" DependsOnTargets="Build">
<Exec
Condition="Exists('$(CCNetWorkingDirectory)\SolutionAnalysis.FxCop')"
Command="fxcopcmd /p:"$(CCNetWorkingDirectory)\SolutionAnalysis.FxCop" /out:"$(CCNetArtifactDirectory)\SolutionAnalysis-Fxcop.xml""
WorkingDirectory="C:\Program Files\Microsoft FxCop 1.35"
ContinueOnError="false"/>
<Message
Condition="!Exists('$(CCNetWorkingDirectory)\SolutionAnalysis.FxCop')"
Text="This solution does not contain a SolutionAnalysis.FxCop file in the solution root." />
<Message Text="TestVar = $(TestVar)"/>
</Target>
You'll notice that this is looking for a "well-known" file called "SolutionAnalysis.fxcop" location in the root of our solution. You may have 20 projects on CCNet - this enables a standard structure across all solutions. If it doesn't find this file, it simply skips the step via the Condition attribute on the Exec task. This Exec task simply calls