So ermitteln Sie den status von msbuild von der Befehlszeile oder C# - Anwendung
Ich Schreibe ein checkout, build-und deployment-Anwendungen in C#, und müssen wissen, der beste Weg, um zu erkennen, ob mein Aufruf msbuild.exe
gelungen ist oder nicht. Ich habe versucht, den Fehlercode aus dem Prozess, aber ich bin mir nicht sicher, ob diese immer richtig sind.
Gibt es eine Möglichkeit (durch den code unten), dass ich sagen kann, ob msbuild.exe
erfolgreich abgeschlossen?
try
{
Process msbProcess = new Process();
msbProcess.StartInfo.FileName = this.MSBuildPath;
msbProcess.StartInfo.Arguments = msbArguments;
msbProcess.Start();
msbProcess.WaitForExit();
if (msbProcess.ExitCode != 0)
{
//
}
else
{
//
}
msbProcess.Close();
}
catch (Exception ex)
{
//
}
- Ich würde davon ausgehen, Sie code würde funktionieren, überprüfen Sie die exit-code, nicht wahr ? Haben Sie sich überlegt mit einem nant-Skript ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Soweit ich in der Lage gewesen, zu bestimmen, MSBuild gibt einen exit-code > 0, wenn es auf einen Fehler stößt. Wenn es keine Fehler auftreten, wird ein exit-code von 0. Ich habe es nie erlebt Ausfahrt mit einem code < 0.
Ich es in einer batch-Datei:
In vier Jahren so, ich hatte noch nie Grund zu hinterfragen, die Richtigkeit dieses Ansatzes.
Mehrere Fragen, auf die MSDN-Foren Fragen, die gleiche Sache. Zum Beispiel: http://social.msdn.microsoft.com/forums/en-US/msbuild/thread/a4ae6b2b-9b1f-4e59-86b4-370f44d73a85. Die standard-Antwort ist, in der Tat, "if errorlevel 0 ist, dann gibt es keine Fehler."
echo Exit Code is %errorlevel%
nach der msbuild-Befehl.Sorry wenn ich mich ein wenig zu spät für die party... aber fast 7 Jahre, nachdem die Frage gepostet wurde, wollte ich eine vollständige Antwort für Sie. Ich habe einige tests mit dem code unten, und hier sind die Schlussfolgerungen:
Analyse
msbuild.exe
zurück1
wenn mindestens ein build-Fehler Auftritt, und zurück0
wenn der build erfolgreich abgeschlossen wird. Derzeit wird das Programm nicht nehmen die Warnungen zu berücksichtigen, was bedeutet, dass ein erfolgreicher build mit Warnungen Ursachenmsbuild.exe
noch zurück0
.Andere Fehler, wie: versuchen, ein Projekt erstellen, die nicht vorhanden ist, oder eine falsche-argument (wie
/myInvalidArgument
), wird auch dazu führenmsbuild.exe
zurück1
.Quellcode
Den folgenden C# - code ist eine vollständige Implementierung für den Aufbau Ihrer Lieblings-Projekte durch brennen
msbuild.exe
von einer Befehlszeile aus. Vergessen Sie nicht, um das setup alle erforderlichen Umwelt-Einstellungen vor dem kompilieren Ihrer Projekte.Ihre BuildControl Klasse:
MsBuilder - Klasse: Baut die Sachen aufrufen MsBuild.exe von der Kommandozeile aus:
CommandLineProcess Klasse - Startet ein command-line-Prozess und wartet bis es abgeschlossen ist. Alle standard-Ausgabe/Fehler erfasst wird, und keine separaten Fenster gestartet wird, die für den Prozess:
PS: ich bin mit Visual Studio 2017 /.NET 4.7.2