Domanda

Sto cercando di installazione CruiseControl.net al momento.Finora funziona bello, ma ho un Problema con l'Attività MSBuild.

Secondo il Documentazione, passa CCNetArtifactDirectory di MSBuild.Ma come faccio ad usarlo?

Ho provato in questo modo:

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

Ma che non funziona.Infatti, uccide il servizio con questo errore:

ThoughtWorks.CruiseControl.Core.Config.Per il preprocessore.EvaluationException:Riferimento al simbolo sconosciuto CCNetArtifactDirectory

La documentazione è piuttosto scarsa, e google und offre principalmente modificando il .sln file di Progetto, che è quello che voglio evitare per essere in grado di creare manualmente questo progetto in un secondo momento - io veramente preferisco /p:OutputPath.

È stato utile?

Soluzione

Il CCNetArtifactDirectory è passato al MSBuild per impostazione predefinita, in modo da non avete bisogno di preoccuparsi.MSBuild vi posto l'output di generazione in "bin posizione" rilevanti per la directory di lavoro che avete 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 sopra la vostra build uscita sarà messo in C:\data\projects\FooSolution[ProjectName]\bin\Debug.Se volete uscita in una posizione diversa si potrebbe voler guardare i 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 ti consentirà di pubblicare la tua uscita in una posizione diversa.

Altri suggerimenti

È possibile utilizzare l'artefatto directory variabile all'interno di MSBuild script stesso.Ecco un esempio di come sto correndo FxCop adesso il mio CC.Net script di MSBuild (questo script è quello che CC.Net punti - c'è anche un "Costruire" target nello script che include un'attività MSBuild contro il SLN a 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"
/>

Parametri come CCNetArtifactDirectory sono passato a programmi esterni utilizzo di variabili di ambiente.Essi sono disponibili in un programma esterno, ma non sono all'interno CCNET di configurazione.Questo spesso porta a confusione.

È possibile utilizzare un preprocessore costante 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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top