Ich habe eine einfache Konsolenanwendung in .NET. Es ist nur ein Testteil einer größeren Anwendung. Ich möchte den "Exit-Code" meiner Konsolenanwendung angeben. Wie mache ich das?
471
3 Optionen:
Main
wenn Sie Ihre Main
Methode für die Rückgabe deklarieren int
.Environment.Exit(code)
.Environment.ExitCode = -1;
. Dies wird verwendet, wenn nichts anderes den Rückkehrcode festlegt oder eine der anderen oben genannten Optionen verwendet.Abhängig von Ihrer Anwendung (Konsole, Dienst, Webanwendung usw.) können verschiedene Methoden verwendet werden.
0
Erfolg, und ein Wert ungleich Null bedeutet Misserfolg.return;
Zeigt Erfolg durch Exit-Code0
an undreturn -1;
zeigt Fehler an.Zusätzlich zu den Antworten auf die Rückgabe ... ein Plädoyer für geistige Gesundheit. Bitte definieren Sie Ihre Exit-Codes in einer Aufzählung, gegebenenfalls mit Flags. Dies erleichtert das Debuggen und die Wartung erheblich (und als Bonus können Sie die Exit-Codes einfach auf Ihrem Hilfebildschirm ausdrucken - Sie haben einen davon, oder?).
quelle
0 = Success
kommt von der Tatsache, dass nur ein Erfolgscode benötigt wird, aber viele Fehlercodes, so dass 0, ohne + oder - in Computer-Ganzzahlen, verwendet werden kann, um den Erfolg eindeutig zu identifizierenEs gibt drei Methoden, mit denen Sie einen Exit-Code aus einer Konsolenanwendung zurückgeben können.
Main
Methode in Ihrer Anwendung so, dass sie einint
anstelle vonvoid
(eine Funktion, die einInteger
statt inSub
in VB.Net zurückgibt) zurückgibt, und geben Sie dann den Exit-Code dieser Methode zurück.Main
Methode etwas anderes alsvoid
(Sub
in VB.Net) zurückgibt, wird der Wert dieser Eigenschaft ignoriert.Ein wichtiger Standard, der beachtet werden sollte, ist
0
der „Erfolg“.Verwenden Sie zu einem verwandten Thema eine Aufzählung, um die Exit-Codes zu definieren, die Ihre Anwendung zurückgeben wird. Mit dem FlagsAttribute können Sie eine Kombination von Codes zurückgeben.
Stellen Sie außerdem sicher, dass Ihre Anwendung als "Konsolenanwendung" kompiliert ist.
quelle
Environment.ExitCode
schließt das Programm nicht sofort, aber dieEnvironment.Exit
Methode schließt das Programm sofortProcess
Objekt gestartet werden soll, können Sie das Objekt dazuWaitForExit()
auffordern und dann den Exit-Code von ihm anfordern.Wenn Sie die von David vorgeschlagene Methode verwenden möchten, sollten Sie sich auch das Attribut [Flags] ansehen.
Auf diese Weise können Sie bitweise Operationen an Aufzählungen ausführen.
Dann
wäre 16 + 32. :)
quelle
quelle
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
quelle
Geben Sie einfach den entsprechenden Code von main zurück.
quelle
static void Main(string[] args);
Verwenden Sie ExitCode, wenn Ihr Main eine ungültige Rückgabesignatur hat, andernfalls müssen Sie diese auf den von Ihnen zurückgegebenen Wert "setzen".
Environment.ExitCode-Eigenschaft
quelle
Als Update zu Scott Munros Antwort :
Main
hat keine Auswirkung.main
Einstiegspunkts berücksichtigt.quelle
Main()
nicht das festgelegt wurde,Process.ExitCode
was von der aufrufenden Anwendung gesehen wurde.int Main
können weiterhin als Alternative zu Environment.ExitCode verwendet werden. LinkDie Aufzählungsoption ist ausgezeichnet, kann jedoch durch Multiplizieren der Zahlen wie folgt verbessert werden:
Bei mehreren Fehlern erhalten Sie durch Addition der spezifischen Fehlernummern eine eindeutige Nummer, die die Kombination der erkannten Fehler darstellt.
Beispielsweise kann eine Fehlerstufe von 6 nur aus den Fehlern 4 und 2 bestehen, 12 kann nur aus den Fehlern 4 und 8 bestehen, 14 kann nur aus 2, 4 und 8 bestehen usw.
quelle
Meine 2 Cent:
Die Systemfehlercodes finden Sie hier: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
Sie finden die typischen Codes wie 2 für "Datei nicht gefunden" oder 5 für "Zugriff verweigert".
Und wenn Sie auf einen unbekannten Code stoßen, können Sie mit diesem Befehl herausfinden, was er bedeutet:
z.B
kehrt zurück
quelle
Verwenden Sie diesen Code
Verwenden Sie 0 als int, wenn Sie nichts zurückgeben möchten.
quelle