Wie gebe ich den Exit-Code von einer Konsolenanwendung in .NET?
Frage
Ich habe eine triviale Konsolenanwendung in .NET. Es ist nur ein Test ist Teil einer größeren Anwendung. Ich mag den „Exit-Code“ meine Konsolenanwendung spezifizieren. Wie mache ich das?
Lösung
3 Möglichkeiten:
- Sie können es von
Main
zurück, wenn Sie IhreMain
Methode zurückzukehrenint
erklären. - Sie können rufen Sie
Environment.Exit(code)
. - Sie können den Exit-Code mit Eigenschaften festgelegt:
Environment.ExitCode = -1;
. Dies wird verwendet, wenn nichts anderes setzt den Rückgabecode oder verwendet eine der anderen Optionen oben).
Je nach Anwendung (Konsole, Service, Web-App, etc.) verschiedene Methoden verwendet werden können.
Andere Tipps
Neben den Antworten zur schnellen Rückkehr int der ... ein Plädoyer für die geistige Gesundheit. Bitte, bitte definieren Sie Ihren Exit-Codes in einer Enumeration, mit Flags falls. Es macht die Fehlersuche und Wartung so viel einfacher (und als Bonus, können Sie leicht die Exit-Codes auf Ihrer Hilfe-Bildschirm auszudrucken - Sie tun eine von denen haben, rechts).
enum ExitCode : int {
Success = 0,
InvalidLogin = 1,
InvalidFilename = 2,
UnknownError = 10
}
int Main(string[] args) {
return (int)ExitCode.Success;
}
Es gibt drei Methoden, die Sie verwenden können, einen Exit-Code von einer Konsolenanwendung zurückzukehren.
- ändern Sie die
Main
Methode in der Anwendung, so dass es eineint
stattvoid
zurückgibt (eine Funktion, die einInteger
stattSub
in VB.Net zurückgibt) und dann von diesem Verfahren des Exit-Code zurück. - Geben Sie die Environment.ExitCode Eigenschaft auf den Exit-Code. Beachten Sie, dass Methode 1. Vorrang hat -. Wenn die
Main
Methode etwas anderes alsvoid
zurückgibt (einSub
in VB.Net), wird der Wert dieser Eigenschaft wird ignoriert - Führen Sie den Exit-Code auf der Seite Environment.Exit Methode. Dies wird den Prozess sofort im Gegensatz zu den beiden anderen Verfahren beenden.
Ein wichtiger Standard, die beachtet werden sollte, ist, dass 0
steht für ‚Erfolg‘.
Auf einem verwandtes Thema betrachtet eine Aufzählung mit dem Exit-Codes zu definieren, die Ihre Anwendung zurückkehren wird. Die Flags ermöglicht es Ihnen, eine Kombination von Codes zurückzukehren.
Sie außerdem sicher, dass Ihre Anwendung als 'Console Application' kompiliert wird.
Wenn Sie gehen, um die Methode von David vorgeschlagen verwenden, sollten Sie auch einen Blick auf die [Flags] Attribut.
Auf diese Weise können Sie bitweise Operationen auf Aufzählungen tun.
[Flags]
enum ExitCodes : int
{
Success = 0,
SignToolNotInPath = 1,
AssemblyDirectoryBad = 2,
PFXFilePathBad = 4,
PasswordMissing = 8,
SignFailed = 16,
UnknownError = 32
}
Dann
(ExitCodes.SignFailed | ExitCodes.UnknownError)
wäre 16 + 32:)
System.Environment.ExitCode
http://msdn.microsoft.com/en- us / library / system.environment.exitcode.aspx
int code = 2;
Environment.Exit( code );
Just zurückkehren den entsprechenden Code aus dem Haupt.
int main(string[] args)
{
return 0; //or exit code of your choice
}
Mit Exitcode, wenn Ihr Haupt eine Lücke Rückkehr Signatur hat, sonst müssen Sie „Set“ um den Wert Sie zurück.
Wenn die Main-Methode void zurückgibt, können Sie diese Eigenschaft verwenden, um den Exit-Code zu setzen, die an die aufrufende Umgebung zurückgegeben werden. Wenn Haupt nicht leer zurückkehrt, wird diese Eigenschaft ignoriert. Der Anfangswert dieser Eigenschaft ist Null.
Als Update Scott Munros beantworten :
- In C # 6.0 und VB.NET 14,0 (VS 2015), entweder Environment.Exit (exitcode) < a /> erforderlich, um einen nicht-Null-Code von einer Konsolenanwendung zurückzukehren. Ändern des Rückgabetyp
Main
hat keine Auswirkungen. - In F # 4.0 (VS 2015), wird der Rückgabewert des
main
Einstiegspunkt respektiert werden.
Die Aufzählung Option ausgezeichnet ist jedoch können die Zahlen wie in Multiplikation verbessert werden bei durch:
enum ExitCodes : int
{
Success = 0,
SignToolNotInPath = 1,
AssemblyDirectoryBad = 2,
PFXFilePathBad = 4,
PasswordMissing = 8,
SignFailed = 16,
UnknownError = 32
}
Im Fall von Mehrfachfehlern, und fügt hinzu, die spezifischen Fehlernummern zusammen gibt Ihnen eine eindeutige Nummer, die die Kombination der erkannten Fehler darstellen.
Zum Beispiel kann eine Fehlerebene von 6 nur von Fehlern 4 und 2 bestehen kann, 12 nur von Fehlern 4 und 8 bestehen kann, kann nur 14 bestehen aus 2, 4 und 8 usw.
Meine 2 Cent:
Sie können die Systemfehlercodes finden Sie hier: https://msdn.microsoft. com / en-us / library / windows / Desktop / ms681382 (v = VS.85) aspx
Sie werden die typischen Codes wie 2 für „Datei nicht gefunden“ oder 5 für „Zugriff verweigert“.
findenUnd wenn Sie an einem unbekannten Code stolpern, können Sie diesen Befehl verwenden, um herauszufinden, was es bedeutet:
net helpmsg decimal_code
z.
net helpmsg 1
Rückkehr
Falsche Funktion
Mit diesem Code
Environment.Exit(0);
Verwendung 0 als int, wenn Sie nicht wollen, etwas zurück.