¿Cómo especifico el código de salida de una aplicación de consola en .NET?
Tengo una aplicación de consola trivial en .NET. Es sólo una parte de prueba de una aplicación más grande. Me gustaría especificar el "código de salida" de mi aplicación de consola. ¿Cómo hago esto?
Tres opciones:
- Puede devolverlo
Main
si declara suMain
método para devolverloint
. - Puedes llamar
Environment.Exit(code)
. - Puede configurar el código de salida usando propiedades:
Environment.ExitCode = -1;
. Esto se usará si nada más establece el código de retorno o usa una de las otras opciones anteriores).
Dependiendo de su aplicación (consola, servicio, aplicación web, etc.), se pueden utilizar diferentes métodos.
Además de las respuestas que cubren los retornos... una petición de cordura. Por favor, defina sus códigos de salida en una enumeración, con Banderas si corresponde. Hace que la depuración y el mantenimiento sean mucho más fáciles (y, como beneficio adicional, puedes imprimir fácilmente los códigos de salida en la pantalla de ayuda; tienes uno de esos, ¿verdad?).
enum ExitCode : int {
Success = 0,
InvalidLogin = 1,
InvalidFilename = 2,
UnknownError = 10
}
int Main(string[] args) {
return (int)ExitCode.Success;
}
Hay tres métodos que puede utilizar para devolver un código de salida desde una aplicación de consola.
- Modifique el
Main
método en su aplicación para que devuelva unint
en lugar devoid
(una función que devuelve unInteger
en lugar deSub
en VB.NET ) y luego devuelva el código de salida de ese método. - Establezca la propiedad Environment.ExitCode en el código de salida. Tenga en cuenta que el método 1 tiene prioridad: si el
Main
método devuelve algo distinto devoid
(es aSub
en VB.Net), el valor de esta propiedad se ignorará. - Pase el código de salida al método Environment.Exit . Esto finalizará el proceso inmediatamente a diferencia de los otros dos métodos.
Un estándar importante que se debe observar es el que 0
representa el "éxito".
En un tema relacionado, considere usar una enumeración para definir los códigos de salida que devolverá su aplicación. FlagsAttribute le permitirá devolver una combinación de códigos.
Además, asegúrese de que su aplicación esté compilada como una 'Aplicación de consola'.
Si va a utilizar el método sugerido por David , también debería echar un vistazo al atributo [Flags].
Esto le permite realizar operaciones bit a bit en enumeraciones.
[Flags]
enum ExitCodes : int
{
Success = 0,
SignToolNotInPath = 1,
AssemblyDirectoryBad = 2,
PFXFilePathBad = 4,
PasswordMissing = 8,
SignFailed = 16,
UnknownError = 32
}
Entonces
(ExitCodes.SignFailed | ExitCodes.UnknownError)
Sería 16 + 32. :)