Tengo una aplicación de consola trivial en .NET. Es solo 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?
471
3 opciones:
Main
si declara su Main
método de devolución int
.Environment.Exit(code)
.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 usar diferentes métodos.
0
significa éxito y no cero significa error.return;
indica éxito a través del código de salida0
ereturn -1;
indica falla.Además de las respuestas que cubren el retorno int ... una súplica por 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, puede imprimir fácilmente los códigos de salida en la pantalla de ayuda; tiene uno de esos, ¿verdad?).
fuente
0 = Success
proviene del hecho de que solo se necesita un código de éxito, pero se pueden usar muchos códigos de error, como 0, que no tiene + o - en los enteros de la computadora, para identificar el éxito de manera únicaHay tres métodos que puede usar para devolver un código de salida de una aplicación de consola.
Main
método en su aplicación para que devuelva un enint
lugar devoid
(una función que devuelve un enInteger
lugar deSub
en VB.Net) y luego devuelva el código de salida de ese método.Main
método devuelve algo que no seavoid
(es aSub
en VB.Net), el valor de esta propiedad se ignorará.Un estándar importante que debe observarse es que
0
representa el "éxito".En un tema relacionado, considere usar una enumeración para definir los códigos de salida que su aplicación va a devolver. El FlagsAttribute le permitirá volver una combinación de códigos.
Además, asegúrese de que su aplicación se compila como una 'Aplicación de consola'.
fuente
Environment.ExitCode
no cierra el programa de inmediato, pero elEnvironment.Exit
método lo cierra de inmediatoProcess
objeto, puede solicitarle el objetoWaitForExit()
y luego solicitarle el código de salida.Si va a utilizar el método sugerido por David, también debe echar un vistazo al Atributo [Banderas].
Esto le permite realizar operaciones poco sabias en las enumeraciones.
Entonces
sería 16 + 32. :)
fuente
fuente
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
fuente
Simplemente devuelva el código apropiado de main.
fuente
static void Main(string[] args);
Utilice ExitCode si su principal tiene una firma de devolución nula, de lo contrario, debe "establecerla" por el valor que devuelve.
Propiedad Environment.ExitCode
fuente
Como una actualización de la respuesta de Scott Munro :
Main
no tiene ningún efecto.main
se respeta el valor de retorno del punto de entrada.fuente
Main()
no configuró elProcess.ExitCode
que ve la aplicación de llamada.int Main
que todavía se puede usar como una alternativa a Environment.ExitCode. enlaceLa opción de enumeración es excelente, sin embargo, puede mejorarse multiplicando los números como en:
En el caso de múltiples errores, agregar los números de error específicos juntos le dará un número único que representará la combinación de errores detectados.
Por ejemplo, un nivel de error de 6 solo puede consistir en los errores 4 y 2, 12 solo puede consistir en los errores 4 y 8, 14 solo puede consistir en 2, 4 y 8, etc.
fuente
Mis 2 centavos:
Puede encontrar los códigos de error del sistema aquí: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
Encontrará los códigos típicos como 2 para "archivo no encontrado" o 5 para "acceso denegado".
Y cuando te topas con un código desconocido, puedes usar este comando para descubrir lo que significa:
p.ej
devoluciones
fuente
Usa este código
use 0 como int si no desea devolver nada.
fuente