Fehlersuche beim CCNetArtifactDirectory
Problem in CruiseControl.net
Die Einrichtung eines automatisierten Build-Systems kann knifflig sein, insbesondere wenn es um plattformabhängige Konfigurationen geht. Eine häufige Herausforderung, mit der Entwickler konfrontiert sind, ist die Integration von CruiseControl.net
mit der MSBuild
-Aufgabe. Dieser Blogbeitrag zielt darauf ab, klarzustellen, wie Sie CCNetArtifactDirectory
effektiv nutzen können, um sicherzustellen, dass Ihre Build-Ausgaben korrekt verwaltet werden, ohne unnötige Änderungen an den Projektdateien vornehmen zu müssen.
Das Problem verstehen
Möglicherweise sind Sie auf ein Problem gestoßen, während Sie CruiseControl.net einrichten, das die Konfiguration der MSBuild
-Aufgabe betrifft. Die Hauptfrage hierbei ist:
Wie nutze ich
CCNetArtifactDirectory
effektiv innerhalb von MSBuild, ohne Fehler im Build-Prozess zu verursachen?
Die Verwirrung entsteht, weil CCNetArtifactDirectory
zwar automatisch an MSBuild übergeben werden sollte, viele Benutzer jedoch feststellen, dass sie es in ihren Build-Argumenten nicht korrekt referenzieren können. Ein häufiger Fehler, den Sie möglicherweise sehen, ist:
ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Referenz auf unbekanntes Symbol CCNetArtifactDirectory
Lassen Sie uns in eine Lösung eintauchen.
Die Lösung
Keine Sorgen um CCNetArtifactDirectory
Die gute Nachricht ist, dass Sie CCNetArtifactDirectory
nicht direkt in Ihren MSBuild-Befehlen angeben müssen. Standardmäßig übergibt CruiseControl.net dieses Verzeichnis an MSBuild, das sich darum kümmert, die Build-Ausgaben an dem richtigen Ort basierend auf dem in Ihrer Konfiguration angegebenen Arbeitsverzeichnis zu platzieren.
Hier ist ein Beispiel für eine Konfiguration:
<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>
Speicherort der Ausgaben
Mit der obigen Konfiguration werden die Ausgaben Ihrer Builds an folgendem Ort geleitet:
C:\data\projects\FooSolution\[Projektname]\bin\Debug
Das bedeutet, dass die Artefakte korrekt generiert werden, ohne dass Sie sich um die Angabe von CCNetArtifactDirectory
kümmern müssen.
Anpassen des Speicherorts der Ausgaben
Wenn Sie jedoch Ihre Ausgaben an einem anderen Ort ablegen möchten, können Sie dies durch den Abschnitt <publishers>
in Ihrer CruiseControl.net-Konfiguration erreichen.
So passen Sie das Ausgabeverzeichnis an:
<publishers>
<xmllogger />
<buildpublisher>
<sourceDir>C:\data\projects\FooSolution\FooProject\bin\Debug</sourceDir>
<publishDir>C:\published\FooSolution\</publishDir>
<useLabelSubDirectory>false</useLabelSubDirectory>
</buildpublisher>
</publishers>
In dieser Beispielkonfiguration:
sourceDir
: Geben Sie das Verzeichnis an, aus dem MSBuild die Artefakte veröffentlicht.publishDir
: Legen Sie das Ziel fest, an dem Sie die Build-Ausgaben veröffentlichen möchten.useLabelSubDirectory
: Diese Option kann aktiviert oder deaktiviert werden, um Label-Verzeichnisse in Ihrem Veröffentlichungs-Pfad einzuschließen oder auszuschließen.
Zusammenfassung
Die Integration von CruiseControl.net mit MSBuild muss keine entmutigende Aufgabe sein. Indem Sie erkennen, dass Sie CCNetArtifactDirectory
nicht direkt referenzieren müssen, können Sie Ihren Build-Prozess effektiv optimieren. Wenn Sie jemals die Build-Ausgaben umleiten müssen, konfigurieren Sie einfach den Abschnitt <publishers>
entsprechend.
Mit diesen Lösungen sind Sie besser gerüstet, um Ihre automatisierten Build-Konfigurationen nahtlos zu verwalten.
Damit schließen wir unseren Überblick über den Umgang mit CCNetArtifactDirectory
-Problemen in CruiseControl.net bei Verwendung von MSBuild ab. Nutzen Sie dieses Wissen, um Ihren Arbeitsablauf zu verbessern und Ihre Entwicklungserfahrung reibungsloser zu gestalten!