Ich habe eine triviale Konsolenanwendung in .NET. Es ist nur ein Testteil einer größeren Anwendung. Ich möchte den "Exit-Code" meiner Konsolenanwendung angeben. Wie kann ich das tun?
Antworten
Zu viele Anzeigen?Drei Optionen:
- Sie können es zurückgeben von
Main
wenn Sie IhreMain
Methode zur Rückgabeint
. - Sie können anrufen
Environment.Exit(code)
. - Sie können die Exit-Code Eigenschaften verwenden:
Environment.ExitCode = -1;
. Dies wird verwendet, wenn nichts anderes den Rückgabecode festlegt oder eine der anderen oben genannten Optionen verwendet).
Je nach Anwendung (Konsole, Dienst, Webanwendung usw.) können unterschiedliche Methoden verwendet werden.
Zusätzlich zu den Antworten, die die Rückgabe von int's abdecken... ein Plädoyer für Vernunft. Bitte, bitte definieren Sie Ihre Exit-Codes in einem Enum, mit Flags, falls angebracht. Das macht das Debuggen und die Wartung so viel einfacher (und als Bonus können Sie die Exit-Codes einfach auf Ihrem Hilfebildschirm ausdrucken - Sie haben doch so einen, oder?).
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, um einen Exit-Code aus einer Konsolenanwendung zurückzugeben.
- Ändern Sie die
Main
Methode in Ihrer Anwendung, so dass sie eineint
anstelle vonvoid
(eine Funktion, die eineInteger
anstelle vonSub
en VB.NET ) und geben dann den Exit-Code dieser Methode zurück. - Setzen Sie die Environment.ExitCode Eigenschaft auf den Exit-Code. Beachten Sie, dass Methode 1. Vorrang hat - wenn die
Main
Methode etwas anderes zurückgibt alsvoid
(ist einSub
in VB.Net), dann wird der Wert dieser Eigenschaft ignoriert. - Übergeben Sie den Exit-Code an die Umwelt.Beenden Methode. Im Gegensatz zu den beiden anderen Methoden wird der Prozess damit sofort beendet.
Ein wichtiger Standard, der beachtet werden sollte, ist, dass 0
steht für 'Erfolg'.
Zu einem verwandten Thema: Erwägen Sie die Verwendung einer Aufzählung, um die Exit-Codes zu definieren, die Ihre Anwendung zurückgeben wird. Die FlaggenAttribut ermöglicht es Ihnen, eine Kombination von Codes zurückzugeben.
Stellen Sie außerdem sicher, dass Ihre Anwendung als "Konsolenanwendung" kompiliert ist.
Wenn Sie Folgendes verwenden möchten die von David vorgeschlagene Methode sollten Sie auch einen Blick auf das Attribut [Flags] werfen.
Damit können Sie bitweise Operationen auf Enums durchführen.
[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. :)
- See previous answers
- Weitere Antworten anzeigen