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

stimmen
15

Ich versuche im Moment Setup CruiseControl.net. Bisher funktioniert es schön, aber ich habe ein Problem mit der MSBuild-Aufgabe.

Gemäß der Dokumentation , geht es CCNetArtifactDirectory zu MSBuild. Aber wie kann ich es nutzen?

Ich habe versucht, dies:

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

Aber das funktioniert nicht. In der Tat, es tötet den Dienst mit diesem Fehler:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Verweis auf unbekanntes Symbol CCNetArtifactDirectory

Die Dokumentation ist eher spärlich, und Google und bietet vor allem die SLN Projektdatei zu ändern, das ist , was ich , um zu vermeiden , soll später dieses Projekt manuell in der Lage sein zu bauen - ich würde wirklich lieber /p:OutputPath.

Veröffentlicht am 03/08/2008 um 22:25
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
6

Die CCNetArtifactDirectory wird das MSBuild standardmäßig übergeben, so dass Sie nicht darum kümmern müssen. MSBuild wird die Build-Ausgabe in dem „Lagerplatz“ relevant für das Arbeitsverzeichnis platzieren, die Sie angegeben haben.

<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>

So in dem obigen Beispiel Ihre Build-Ausgabe wird in C gesetzt werden: \ data \ projects \ FooSolution [Projektname] \ bin \ Debug. Sollten Sie an einen anderen Ort ausgeben wollen, können Sie bei dem Tag-in CCNET suchen.

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

Dies ermöglicht Ihnen, Ihre Ausgabe an einen anderen Ort zu veröffentlichen.

Beantwortet am 04/08/2008 um 05:45
quelle vom benutzer

stimmen
5

Sie können das Artefakt Verzeichnis Variable im Skript selbst MSBuild verwenden. Hier ist ein Beispiel dafür, wie ich FxCop jetzt von meinem CC.Net MSBuild Script renne (dieses Skript ist was CC.NET Punkte - gibt es auch ein „Build“ Ziel im Skript, das eine MSBuild-Aufgabe gegen die SLN enthält zu tun, um die tatsächliche Kompilierung):

<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"
/>
Beantwortet am 04/08/2008 um 15:40
quelle vom benutzer

stimmen
2

Parameter wie CCNetArtifactDirectoryan externe Programme übergeben Umgebungsvariablen. Sie sind im externen Programm zur Verfügung , aber sie sind nicht in CCNETKonfiguration. Dies führt häufig zu Verwirrung.

Sie können stattdessen eine Präprozessorkonstante verwenden:

<cb:define project.artifactDirectory="C:\foo">
<project>
  <!-- [...] -->
  <artifactDirectory>$(project.artifactDirectory)</artifactDirectory>
  <!-- [...] -->
  <tasks>
    <!-- [...] -->
    <msbuild>
      <!-- [...] -->
      <buildArgs>/noconsolelogger /p:OutputPath=$(project.artifactDirectory)\test</buildArgs>
      <!-- [...] -->
    </msbuild>
    <!-- [...] -->
  </tasks>
  <!-- [...] -->
</project>
Beantwortet am 26/02/2010 um 18:29
quelle vom benutzer

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