CruiseControl.net, msbuild, / p: OutputPath e CCNetArtifactDirectory

voti
15

Sto cercando di impostare CruiseControl.net in questo momento. Finora funziona bello, ma ho un problema con il MSBuild Task.

Secondo la documentazione , passa CCNetArtifactDirectory a MSBuild. Ma come faccio a utilizzarlo?

Ho provato questo:

<buildArgs>
   /noconsolelogger /p:OutputPath=$(CCNetArtifactDirectory)\test
</buildArgs>

Ma questo non funziona. In realtà, si uccide il servizio con questo errore:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: riferimento al simbolo sconosciuto CCNetArtifactDirectory

La documentazione è piuttosto scarsa, e google und principalmente offerte modificando il file di progetto .sln, che è quello che voglio evitare, al fine di essere in grado di costruire manualmente questo progetto dopo - Vorrei davvero preferisco /p:OutputPath.

È pubblicato 03/08/2008 alle 22:25
fonte dall'utente
In altre lingue...                            


3 risposte

voti
6

Il CCNetArtifactDirectory viene passato al MSBuild di default, quindi non avete bisogno di preoccuparsi. MSBuild metterà l'uscita di build nella "posizione bin" rilevanti per la directory di lavoro che è stato specificato.

<executable>c:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\data\projects\FooSolution\</workingDirectory>
<projectFile>FooSolution.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug </buildArgs>

Così, nell'esempio di cui sopra l'output di compilazione sarà messo in C: \ Data \ progetti \ FooSolution [ProjectName] \ bin \ debug. Se volete l'uscita in una posizione diversa si consiglia di guardare del tag in CCNet.

<publishers>
  <xmllogger />
  <buildpublisher>
    <sourceDir>C:\data\projects\FooSolution\FooProject\bin\Debug</sourceDir>
    <publishDir>C:\published\FooSolution\</publishDir>
    <useLabelSubDirectory>false</useLabelSubDirectory>
  </buildpublisher>
</publishers>

Questo vi permetterà di pubblicare l'output in una posizione diversa.

Risposto il 04/08/2008 a 05:45
fonte dall'utente

voti
5

È possibile utilizzare la variabile directory manufatto all'interno dello script MSBuild stesso. Ecco un esempio di come sto correndo FxCop in questo momento dalla mia CC.Net sceneggiatura MSBuild (questo script è quello che CC.Net punti - c'è anche un obiettivo "Build" nello script che include un compito MSBuild contro il linfonodo sentinella per fare la compilazione vera e propria):

<Exec
  Command='FxCopCmd.exe /project:"$(MSBuildProjectDirectory)\FXCopRules.FxCop" /out:"$(CCNetArtifactDirectory)\ProjectName.FxCop.xml"'
  WorkingDirectory="C:\Program Files\Microsoft FxCop 1.35"
  ContinueOnError="true"
  IgnoreExitCode="true"
/>
Risposto il 04/08/2008 a 15:40
fonte dall'utente

voti
2

Parametri come CCNetArtifactDirectorysono passato a programmi esterni che utilizzano le variabili d'ambiente. Sono disponibili nel programma esterno, ma non sono dentro CCNETla configurazione. Questo porta spesso a confusione.

È possibile utilizzare una costante preprocessore invece:

<cb:define project.artifactDirectory="C:\foo">
<project>
  <!-- [...] -->
  <artifactDirectory>$(project.artifactDirectory)</artifactDirectory>
  <!-- [...] -->
  <tasks>
    <!-- [...] -->
    <msbuild>
      <!-- [...] -->
      <buildArgs>/noconsolelogger /p:OutputPath=$(project.artifactDirectory)\test</buildArgs>
      <!-- [...] -->
    </msbuild>
    <!-- [...] -->
  </tasks>
  <!-- [...] -->
</project>
Risposto il 26/02/2010 a 18:29
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more