Ich habe eine Batch-Datei, die den exit
Befehl verwendet, um einen Exit-Code zurückzugeben.Vergeben von Exit-Codes aus Batch-Dateien, die von Msbuild aufgerufen werden
Diese Stapeldatei kann in einigen Fällen interaktiv über eine Befehlszeile aufgerufen werden oder in anderen Fällen als Teil eines MSBuild-Projekts mit der Task Exec
ausgeführt werden.
- Wenn ich
exit %errorlevel%
in meiner Batch-Datei verwenden, das funktioniert gut und MSBuild sieht den Fehlercode, jedoch ein interaktiver Benutzer, den die Batch-Datei aus einem Befehlsfenster ausgeführt wird, wird eine rohe Ausfahrt cmd.exe erhält in dieser Fall. - Wenn ich
exit /b %errorlevel%
verwende, erhält das interaktive Szenario keinen unhöflichen Ausgang, aber dies bedeutet auch, dass der von meinerExec
gestartete Taskcmd
ebenfalls nicht beendet wird und daher MSBuild den Rückgabewert nicht erkennt.
Als Lösung für beide Probleme, ich versuche exit /b
zu verwenden, aber die Batch-Datei von meinem Build-Skript wie folgt starten:
<Exec Command="Batch.cmd params & exit %errorlevel%" />
Die Idee ist, dass ich die ‚Nicht-Terminal ausdrücklich nehmen 'Rückkehr von exit /b
und manuell exit
aufrufen, um diesen Wert außerhalb von cmd.exe
zu propagieren, wo die Exec
Build Task es sehen kann.
Dies scheint die perfekte Lösung, aber es funktioniert nicht. Exec
erhält immer noch nicht den richtigen Fehlerwert.