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?
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?
Respostas:
3 opções:
Mainse declarar seu Mainmé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.
0significa sucesso e diferente de zero significa falha. return;indica sucesso através do código de saída 0e return -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?).
enum ExitCode : int {
Success = 0,
InvalidLogin = 1,
InvalidFilename = 2,
UnknownError = 10
}
int Main(string[] args) {
return (int)ExitCode.Success;
}
0 = Successvem 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 sucesso
Existem três métodos que você pode usar para retornar um código de saída de um aplicativo de console.
Mainmétodo no seu aplicativo para que ele retorne um em intvez de void(uma função que retorna um em Integervez de Subno VB.Net) e, em seguida, retorne o código de saída desse método.Mainmétodo retornar algo diferente de void(é um Subno VB.Net), o valor dessa propriedade será ignorado.Um padrão importante que deve ser observado é o que 0representa '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'.
Environment.ExitCodenão fechar o programa imediatamente, mas Environment.Exitmétodo fecha o programa imediatamente
Processobjeto, você poderá solicitar o objeto WaitForExit()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.
[Flags]
enum ExitCodes : int
{
Success = 0,
SignToolNotInPath = 1,
AssemblyDirectoryBad = 2,
PFXFilePathBad = 4,
PasswordMissing = 8,
SignFailed = 16,
UnknownError = 32
}
Então
(ExitCodes.SignFailed | ExitCodes.UnknownError)
seria 16 + 32. :)
int code = 2;
Environment.Exit( code );
System.Environment.ExitCode
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
Basta retornar o código apropriado de main.
int main(string[] args)
{
return 0; //or exit code of your choice
}
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
Se o método Main retornar nulo, você poderá usar esta propriedade para definir o código de saída que será retornado ao ambiente de chamada. Se Main não retornar nulo, essa propriedade será ignorada. O valor inicial desta propriedade é zero.
Como atualização da resposta de Scott Munro :
Mainnão tem efeito.mainponto de entrada é respeitado.Main()não definiu o Process.ExitCodevisto pelo aplicativo de chamada.
int Mainainda pode ser usado como uma alternativa ao Environment.ExitCode. link
A opção de enumeração é excelente, mas pode ser aprimorada multiplicando os números como em:
enum ExitCodes : int
{
Success = 0,
SignToolNotInPath = 1,
AssemblyDirectoryBad = 2,
PFXFilePathBad = 4,
PasswordMissing = 8,
SignFailed = 16,
UnknownError = 32
}
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.
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:
net helpmsg decimal_code
por exemplo
net helpmsg 1
retorna
Função incorreta
Use este código
Environment.Exit(0);
use 0 como int se você não quiser retornar nada.