MrD*_*ase 457 .net c# exit-code
我在.NET中有一个简单的控制台应用程序.它只是更大应用程序的测试部分.我想指定我的控制台应用程序的"退出代码".我该怎么做呢?
The*_*edi 581
3个选项:
Main,如果你申报你的Main方法来返回int.Environment.Exit(code).Environment.ExitCode = -1;.如果没有其他设置返回代码或使用上面的其他选项之一,将使用此方法).根据您的应用程序(控制台,服务,Web应用程序等),可以使用不同的方法.
Mar*_*ett 262
除了回答int的答案之外......还要求理智.请在枚举中定义退出代码,如果合适,请使用Flags.它使调试和维护变得更加容易(而且,作为奖励,您可以轻松地在帮助屏幕上打印退出代码 - 您确实有其中一个,对吧?).
enum ExitCode : int {
Success = 0,
InvalidLogin = 1,
InvalidFilename = 2,
UnknownError = 10
}
int Main(string[] args) {
return (int)ExitCode.Success;
}
Run Code Online (Sandbox Code Playgroud)
Sco*_*nro 46
您可以使用三种方法从控制台应用程序返回退出代码.
Main应用程序中的方法,使其返回int而不是void(返回Integer而不是SubVB.Net中的函数),然后返回该方法的退出代码.Main方法返回除void(Sub在VB.Net中)之外的任何内容,则将忽略此属性的值.应该遵守的一个重要标准是0代表"成功".
在相关主题上,请考虑使用枚举来定义应用程序要返回的退出代码.该的FlagsAttribute将允许您返回码的组合.
另外,请确保将您的应用程序编译为"控制台应用程序".
小智 43
如果您打算使用David建议的方法,您还应该查看[Flags]属性.
这允许您对枚举进行逐位操作.
[Flags]
enum ExitCodes : int
{
Success = 0,
SignToolNotInPath = 1,
AssemblyDirectoryBad = 2,
PFXFilePathBad = 4,
PasswordMissing = 8,
SignFailed = 16,
UnknownError = 32
}
Run Code Online (Sandbox Code Playgroud)
然后
(ExitCodes.SignFailed | ExitCodes.UnknownError)
Run Code Online (Sandbox Code Playgroud)
将是16 + 32. :)
alb*_*ein 25
System.Environment.ExitCode
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
pal*_*rse 24
int code = 2;
Environment.Exit( code );
Run Code Online (Sandbox Code Playgroud)
Est*_*aya 11
只需从main返回适当的代码即可.
int main(string[] args)
{
return 0; //or exit code of your choice
}
Run Code Online (Sandbox Code Playgroud)
cra*_*str 11
如果您的main具有void返回签名,请使用ExitCode,否则您需要使用返回的值"设置"它.
如果Main方法返回void,则可以使用此属性设置将返回到调用环境的退出代码.如果Main不返回void,则忽略此属性.此属性的初始值为零.
小智 8
作为Scott Munro 答案的更新:
Main无效.main入口点的返回值.枚举选项非常好,但可以通过乘以数字来改进:
enum ExitCodes : int
{
Success = 0,
SignToolNotInPath = 1,
AssemblyDirectoryBad = 2,
PFXFilePathBad = 4,
PasswordMissing = 8,
SignFailed = 16,
UnknownError = 32
}
Run Code Online (Sandbox Code Playgroud)
在出现多个错误的情况下,将特定错误号一起添加将为您提供一个唯一编号,表示检测到的错误的组合.
例如,错误级别6只能包含错误4和2,12只能包含错误4和8,14只能包含2,4和8等.