So che fare due post così vicini tra loro non è
politicamente corretto :S comunque volevo fare un ulteriore considerazione
sulla seconda parte delle mie impressioni su
CC.NET.
Se consultate la documentazione di CC.NET trovate sicuramente che nelle
ultime versioni è stato aggiunto un task particolare per MSBuild, per cui ci si
chiede "perchè utilizzare il nant da cui poi non facciamo altro che chiamare
MSBuild, invece di utilizzare l'appropriato task per MSBuild??". Le mie
ragioni personali sono le seguenti.
In primo se utilizzo MSBuild come task, poi per coerenza lo dovrei utilizare
anche per fare altre operazioni tipo copiare file in giro, fare test etc etc,
per questi task è meglio Nant.
MSBuild non è presente per Visual Studio 2003, meglio quindi abituarsi ad
utilizare il task del NANT, se abbiamo una soluzione di VS2005 utilizziamo
MSBuild altrimenti utilizziamo il suo task <solution>.
Stranamente l'output del WebDashboard mi sembra migliore nel caso di NANT.
Prima di spiegare cosa è e come funziona il Dashboard, bisogna sapere che i vari
tool producono output che deve essere preso da CC.NET per essere mostrato
all'utente in modo da far vedere cosa sta succedendo nelle varie build. MSBuild
non emette di suo output XML, per cui il suo output non può essere consumato da
CC.NET che vuole solamente XML come output. Per questo sono stati fatti formatter appositi su cui potete anche trovare ulteriori informazioni. Il task risultante nel mio
caso è questo.
<msbuild>
<executable>E:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
<workingDirectory>F:\Dati\Tutorials\Tutorials\CCNET\projects\CCNetTest\WorkingFolder\TestProject1</workingDirectory>
<projectFile>TestProject1.sln</projectFile>
<buildArgs>/T:rebuild /p:Configuration=Debug</buildArgs>
<targets>Build</targets>
<timeout>15</timeout>
<logger>E:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
Come vedete ho specificato nel logger la dll che esegue la formattazione,
nonostante quseto nel webdashboard non vedo gli warning di compilazione
BUILD SUCCESSFUL
Project: CCNetTest
Date of build: 20/12/2006 9.57.01
Running time: 00:00:05
Integration Request: continuous triggered a build (IfModificationExists)
Last changed: 2006-12-20 09.56.49
Last log entry:
Modifications since last build (1)
Modified CCNET /trunk/TestProject1/TestProject1/Class1.cs 2006-12-20 09.56.49
Se invece si lancia MSBuild internamente a NAnt, nant
prende tutto l'output di MSBuild, lo mette in un CDATA section del suo output
file e CC.NET riesce a trovare gli warning.
BUILD SUCCESSFUL
Project: CCNetTest
Date of build: 20/12/2006 9.59.14
Running time: 00:00:07
Integration Request: continuous triggered a build (IfModificationExists)
Last changed: 2006-12-20 09.58.48
Last log entry:
Modifications since last build (1)
Modified CCNET /trunk/TestProject1/TestProject1/Class1.cs 2006-12-20 09.58.48
Warnings: (2)
Class1.cs(10,10): warning CS0219: The variable 'other' is assigned but its value is never used
Class1.cs(10,10): warning CS0219: The variable 'other' is assigned but its value is never used
Per questa ulteriore ragione ho preferito mostrare come lanciare msbuild
direttamente da uno script NANT.
Alk.