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?

War es hilfreich?

Lösung

3 Möglichkeiten:

  • Sie können es von Main zurück, wenn Sie Ihre Main Methode zurückzukehren int 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.

  1. ändern Sie die Main Methode in der Anwendung, so dass es eine int statt void zurückgibt (eine Funktion, die ein Integer statt Sub in VB.Net zurückgibt) und dann von diesem Verfahren des Exit-Code zurück.
  2. Geben Sie die Environment.ExitCode Eigenschaft auf den Exit-Code. Beachten Sie, dass Methode 1. Vorrang hat -. Wenn die Main Methode etwas anderes als void zurückgibt (ein Sub in VB.Net), wird der Wert dieser Eigenschaft wird ignoriert
  3. 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:)

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.

Environment.ExitCode Property

  

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.

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“.

finden

Und 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top