c# - visual - Come posso specificare il codice di uscita di un'applicazione console in.NET?




visual studio documentation xml (8)

3 opzioni:

  • Puoi restituirlo da Main se dichiari il tuo metodo Main per tornare int .
  • Puoi chiamare Environment.Exit(code) .
  • È possibile impostare il codice di uscita utilizzando le proprietà: Environment.ExitCode = -1; . Questo sarà usato se nient'altro imposta il codice di ritorno o usa una delle altre opzioni sopra).

A seconda dell'applicazione (console, servizio, app Web, ecc.) È possibile utilizzare diversi metodi.

Ho un'applicazione banale della console in .NET. È solo una parte di test di un'applicazione più grande. Mi piacerebbe specificare il "codice di uscita" della mia applicazione console. Come faccio a fare questo?


Basta restituire il codice appropriato dal principale.

int main(string[] args)
{
      return 0; //or exit code of your choice
}

Esistono tre metodi che è possibile utilizzare per restituire un codice di uscita da un'applicazione console.

  1. Modificare il metodo Main nell'applicazione in modo che restituisca un int invece di void (una funzione che restituisce un Integer anziché Sub in VB.Net) e quindi restituisce il codice di uscita da tale metodo.
  2. Impostare la proprietà Environment.ExitCode sul codice di uscita. Nota che il metodo 1. ha la precedenza: se il metodo Main restituisce qualcosa di diverso da void (è un Sub in VB.Net), il valore di questa proprietà verrà ignorato.
  3. Passa il codice di uscita al metodo Environment.Exit . Questo interromperà il processo immediatamente rispetto agli altri due metodi.

Uno standard importante da osservare è che 0 rappresenta "Successo".

Su un argomento correlato, considerare l'utilizzo di un'enumerazione per definire i codici di uscita che l'applicazione restituirà. FlagsAttribute ti consentirà di restituire una combinazione di codici.

Inoltre, assicurati che la tua applicazione sia compilata come 'Applicazione Console'.


I miei 2 centesimi:

È possibile trovare i codici di errore di sistema qui: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx

Troverai i codici tipici come 2 per "file non trovato" o 5 per "accesso negato".

E quando incappi in un codice sconosciuto, puoi usare questo comando per scoprire cosa significa:

net helpmsg decimal_code

per esempio

net helpmsg 1

ritorna

Funzione errata


L'opzione di enumerazione è eccellente tuttavia può essere migliorata moltiplicando i numeri come in:

enum ExitCodes : int
{
  Success = 0,
  SignToolNotInPath = 1,
  AssemblyDirectoryBad = 2,
  PFXFilePathBad = 4,
  PasswordMissing = 8,
  SignFailed = 16,
  UnknownError = 32
}

In caso di errori multipli, l'aggiunta dei numeri di errore specifici insieme ti darà un numero univoco che rappresenterà la combinazione di errori rilevati.

Ad esempio, un errore di 6 può consistere solo di errori 4 e 2, 12 può consistere solo di errori 4 e 8, 14 può consistere solo di 2, 4 e 8 ecc.


Se stai per usare il metodo suggerito da David, dovresti anche dare un'occhiata all'attributo [Flags].

Ciò consente di eseguire operazioni di bit-saggio sull'enumerazione.

[Flags]
enum ExitCodes : int
{
  Success = 0,
  SignToolNotInPath = 1,
  AssemblyDirectoryBad = 2,
  PFXFilePathBad = 4,
  PasswordMissing = 8,
  SignFailed = 16,
  UnknownError = 32
}

Poi

(ExitCodes.SignFailed | ExitCodes.UnknownError)

sarebbe 16 + 32. :)



int code = 2;
Environment.Exit( code );




exit-code