Eu tenho um aplicativo de console trivial no .NET. É apenas uma parte de teste de um aplicativo maior. Gostaria de especificar o "código de saída" do meu aplicativo de console. Como eu faço isso?
471
3 opções:
Main
se declarar seu Main
método para retornar int
.Environment.Exit(code)
.Environment.ExitCode = -1;
. Isso será usado se nada mais definir o código de retorno ou usar uma das outras opções acima).Dependendo do seu aplicativo (console, serviço, aplicativo da web etc.), diferentes métodos podem ser usados.
0
significa sucesso e diferente de zero significa falha.return;
indica sucesso através do código de saída0
ereturn -1;
indica falha.Além das respostas que cobrem as int retorno ... um pedido de sanidade. Por favor, defina seus códigos de saída em uma enumeração, com Bandeiras, se apropriado. Isso facilita muito a depuração e a manutenção (e, como bônus, você pode imprimir facilmente os códigos de saída na tela de ajuda - você possui um desses, certo?).
fonte
0 = Success
vem do fato de haver apenas um código de sucesso necessário, mas muitos códigos de erro, como 0, como não tendo + ou - em números inteiros de computador, podem ser usados para identificar exclusivamente o sucessoExistem três métodos que você pode usar para retornar um código de saída de um aplicativo de console.
Main
método no seu aplicativo para que ele retorne um emint
vez devoid
(uma função que retorna um emInteger
vez deSub
no VB.Net) e, em seguida, retorne o código de saída desse método.Main
método retornar algo diferente devoid
(é umSub
no VB.Net), o valor dessa propriedade será ignorado.Um padrão importante que deve ser observado é o que
0
representa 'Sucesso'.Em um tópico relacionado, considere usar uma enumeração para definir os códigos de saída que seu aplicativo retornará. O FlagsAttribute permitirá que você retorne uma combinação de códigos.
Além disso, verifique se seu aplicativo é compilado como um 'Aplicativo de console'.
fonte
Environment.ExitCode
não fechar o programa imediatamente, masEnvironment.Exit
método fecha o programa imediatamenteProcess
objeto, você poderá solicitar o objetoWaitForExit()
e solicitar o código de saída.Se você vai usar o método sugerido por David, também deve dar uma olhada no atributo [Flags].
Isso permite que você faça operações inteligentes em enumerações.
Então
seria 16 + 32. :)
fonte
fonte
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
fonte
Basta retornar o código apropriado de main.
fonte
static void Main(string[] args);
Use ExitCode se o seu principal tiver uma assinatura de retorno nula; caso contrário, você precisará "configurá-la" pelo valor retornado.
Propriedade Environment.ExitCode
fonte
Como atualização da resposta de Scott Munro :
Main
não tem efeito.main
ponto de entrada é respeitado.fonte
Main()
não definiu oProcess.ExitCode
visto pelo aplicativo de chamada.int Main
ainda pode ser usado como uma alternativa ao Environment.ExitCode. linkA opção de enumeração é excelente, mas pode ser aprimorada multiplicando os números como em:
No caso de vários erros, a adição de números de erros específicos fornecerá um número único que representará a combinação dos erros detectados.
Por exemplo, um nível de erro 6 pode consistir apenas nos erros 4 e 2, 12 pode consistir apenas nos erros 4 e 8, 14 só pode consistir em 2, 4 e 8 etc.
fonte
Meus 2 centavos:
Você pode encontrar os códigos de erro do sistema aqui: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
Você encontrará os códigos típicos como 2 para "arquivo não encontrado" ou 5 para "acesso negado".
E quando você encontra um código desconhecido, pode usar este comando para descobrir o que significa:
por exemplo
retorna
fonte
Use este código
use 0 como int se você não quiser retornar nada.
fonte