3 Stimmen

Warum Build Fails mit CruiseControl.NET aber es baut gut manuell mit den gleichen Einstellungen?

Ich habe ein Projekt, das gut erstellt, wenn ich es manuell erstellen, aber es schlägt mit CC.NET.

Der Fehler, der bei CC.NET angezeigt wird, hängt im Wesentlichen mit einem fehlgeschlagenen Import zusammen, weil die Datei nicht gefunden wurde; eines der Projekte (C++ dll) versucht, eine von einem anderen Projekt erstellte dll zu importieren. Dll sollte an der richtigen Stelle sein, da es eine Abhängigkeit zwischen den Projekten gibt - indeeed, wenn ich manuell bauen alles funktioniert gut (Beachten Sie, dass, wenn ich sage manuell ich alles frisch aus Quellcode-Repository dann einen Rebuild von VS2005 aufrufen, um CC.NET-Automatisierung zu simulieren).

sieht so aus, als ob Abhängigkeiten ignoriert werden, wenn der Build durch CC.NET automatisiert wird.

Ich baue im Modus Release MinDependency.

Für jede Hilfe wären wir dankbar!

4voto

Herms Punkte 35605

Können Sie CC so ändern, dass es msbuild anstelle von devenv verwendet? Das scheint mir die optimale Lösung zu sein, da es bedeutet, dass der Build in beiden Situationen der gleiche ist.

2voto

JohnIdol Punkte 46869

Nach einer langen Untersuchung - mein Verständnis auf dieser in der aktuellen Phase ist, dass das Problem mit der Tatsache verbunden ist, dass ich devenv verwenden, um durch CruiseControl.NET zu bauen, aber wenn ich manuell VisualStudio bauen ist mit msbuild.

Grundsätzlich führt dies dazu, dass Abhängigkeiten ignoriert werden (aufgrund eines msbuild-Befehls arg, den ich mit devenv nicht reproduzieren kann).

Ich denke, dass die Tatsache, dass Abhängigkeiten zwischen C++-Projekten festgelegt werden, in gewissem Maße auch relevant ist, da ich bei anderen Gelegenheiten in der Lage war, mit CC.NET, das Abhängigkeiten zwischen .NET-Projekten und C++-Projekten festlegt, ordnungsgemäß zu bauen.

Um herauszufinden, was genau die Ursache für diese Unterschiede ist Verhalten hervorruft, muss ich Folgendes tun diese Spur .

Ich würde gerne die Meinung anderer Leute zu diesem Thema hören.

1voto

FlySwat Punkte 165766

Versuchen Sie, es von der Kommandozeile aus zu erstellen und sehen Sie, was passiert.

1voto

Alex Punkte 12071

Ich vermute, dass der Benutzer, unter dem der Dienst konfiguriert ist, andere Berechtigungen und/oder Umgebungsvariablen hat als Sie, wenn Sie den Dienst tatsächlich ausführen. Wenn Sie auf der gleichen physischen Box sind und es kompiliert gut mit Visual Studio und Sie sind auch mit Visual Studio in CruiseControl (nicht MSBuild) dann ist es fast sicher der Benutzer. Wenn Sie jedoch MSBuild in CruiseControl verwenden, gibt es eine riesige Reihe von Unterschieden, wenn MSBuild (2.0) eine C++-Sln kompiliert und wenn Visual Studio es kompiliert. Wenn Sie MSBuild für C++-Lösungen verwenden müssen, sollten Sie die Version 3.5 ausprobieren, die viel mehr Unterstützung für C++-Lösungen bietet.

0voto

HanClinto Punkte 9253

Ich frage mich, ob CC.Net mit unterschiedlichen Umgebungsvariablen erstellt wird, so dass die erforderlichen Bibliotheksverzeichnisse nicht ordnungsgemäß zum Pfad hinzugefügt werden.

Gibt es eine bestimmte Fehlermeldung im CC.Net-Buildprotokoll, warum der DLL-Import fehlgeschlagen ist? Konnte die Datei nicht gefunden werden? Berechtigungen? Suchen Sie im detaillierten CC.Net-Build-Protokoll nach dem Fehler und sehen Sie, wo der Unterschied zu einem normalen Befehlszeilen-Build liegt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X