J'ai une application console triviale dans .NET. C'est juste une partie test d'une application plus large. Je voudrais spécifier le "code de sortie" de mon application console. Comment puis-je faire cela?
471
3 options:
Main
si vous déclarez votre Main
méthode à renvoyer int
.Environment.Exit(code)
.Environment.ExitCode = -1;
. Cela sera utilisé si rien d'autre ne définit le code retour ou n'utilise l'une des autres options ci-dessus).Selon votre application (console, service, application web, etc.), différentes méthodes peuvent être utilisées.
0
signifie succès et non nul signifie échec.return;
indique la réussite via le code de sortie0
etreturn -1;
indique l'échec.En plus des réponses couvrant les retours int ... un plaidoyer pour la raison. Veuillez définir vos codes de sortie dans une énumération, avec des drapeaux, le cas échéant. Cela facilite le débogage et la maintenance (et, en prime, vous pouvez facilement imprimer les codes de sortie sur votre écran d'aide - vous en avez un, non?).
la source
0 = Success
vient du fait qu'il n'y a qu'un seul code de réussite nécessaire, mais de nombreux codes d'erreur, tels que 0, comme n'ayant pas de + ou - dans les entiers informatiques, peuvent être utilisés pour identifier de manière unique le succèsIl existe trois méthodes que vous pouvez utiliser pour renvoyer un code de sortie à partir d'une application console.
Main
méthode dans votre application afin qu'elle renvoie unint
au lieu devoid
(une fonction qui renvoie unInteger
au lieu deSub
dans VB.Net), puis renvoyez le code de sortie de cette méthode.Main
méthode renvoie autre chose quevoid
(est unSub
dans VB.Net) alors la valeur de cette propriété sera ignorée.Une norme importante à observer est celle qui
0
représente le «succès».Sur un sujet connexe, envisagez d'utiliser une énumération pour définir les codes de sortie que votre application va renvoyer. Le FlagsAttribute vous permettra de renvoyer une combinaison de codes.
Assurez-vous également que votre application est compilée en tant qu '«application console».
la source
Environment.ExitCode
ne ferme pas le programme immédiatement mais laEnvironment.Exit
méthode ferme le programme immédiatementProcess
objet, vous pouvez demander à l'objet deWaitForExit()
, puis lui demander le code de sortie.Si vous allez utiliser la méthode suggérée par David, vous devriez également jeter un œil à l'attribut [Flags].
Cela vous permet d'effectuer des opérations peu judicieuses sur les énumérations.
alors
serait 16 + 32. :)
la source
la source
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
la source
Renvoyez simplement le code approprié de main.
la source
static void Main(string[] args);
Utilisez ExitCode si votre main a une signature de retour nulle, sinon vous devez la "définir" en fonction de la valeur que vous retournez.
Environment.ExitCode, propriété
la source
En guise de mise à jour de la réponse de Scott Munro :
Main
n'a aucun effet.main
point d'entrée est respectée.la source
Main()
n'a pas défini leProcess.ExitCode
comme vu par l'application appelante.int Main
qu'il peut toujours être utilisé comme alternative à Environment.ExitCode. lienL'option d'énumération est excellente mais peut être améliorée en multipliant les nombres comme dans:
Dans le cas d'erreurs multiples, l'ajout des numéros d'erreur spécifiques ensemble vous donnera un numéro unique qui représentera la combinaison des erreurs détectées.
Par exemple, un niveau d'erreur de 6 ne peut se composer que des erreurs 4 et 2, 12 ne peut se composer que des erreurs 4 et 8, 14 ne peut se composer que de 2, 4 et 8, etc.
la source
Mes 2 cents:
Vous pouvez trouver les codes d'erreur système ici: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
Vous trouverez les codes typiques comme 2 pour «fichier non trouvé» ou 5 pour «accès refusé».
Et lorsque vous tombez sur un code inconnu, vous pouvez utiliser cette commande pour découvrir ce que cela signifie:
par exemple
Retour
la source
Utilisez ce code
utilisez 0 comme int si vous ne voulez rien retourner.
la source