我在.NET中有一个简单的控制台应用程序 . 它只是更大应用程序的测试部分 . 我想指定我的控制台应用程序的“退出代码” . 我该怎么做呢?
如果您的main具有void返回签名,请使用ExitCode,否则您需要使用返回的值“设置”它 .
Environment.ExitCode Property
如果Main方法返回void,则可以使用此属性设置将返回到调用环境的退出代码 . 如果Main不返回void,则忽略此属性 . 此属性的初始值为零 .
3个选项:
如果声明 Main 方法返回 int ,则可以从 Main 返回 .
Main
int
你可以拨打Environment.Exit(code) .
您可以使用属性设置退出代码: Environment.ExitCode = -1; . 如果没有其他设置返回代码或使用上面的其他选项之一,将使用此方法) .
Environment.ExitCode = -1;
根据您的应用程序(控制台,服务,Web应用程序等),可以使用不同的方法 .
除了回答int的答案之外......还要求理智 . 请在枚举中定义退出代码,如果合适,请使用Flags . 它使调试和维护变得更加容易(而且,作为奖励,您可以轻松地在帮助屏幕上打印退出代码 - 您确实有其中一个,对吧?) .
enum ExitCode : int { Success = 0, InvalidLogin = 1, InvalidFilename = 2, UnknownError = 10 } int Main(string[] args) { return (int)ExitCode.Success; }
您可以使用三种方法从控制台应用程序返回退出代码 .
修改应用程序中的 Main 方法,使其返回 int 而不是 void (在VB.Net中返回 Integer 而不是 Sub 的函数),然后从该方法返回退出代码 .
void
Integer
Sub
将Environment.ExitCode属性设置为退出代码 . 请注意,方法1.优先 - 如果 Main 方法返回除_1177869之外的任何内容(在VB.Net中为 Sub ),则将忽略此属性的值 .
将退出代码传递给Environment.Exit方法 . 这将立即终止该过程,而不是其他两种方法 .
应该遵守的一个重要标准是 0 代表'Success' .
0
在相关主题上,请考虑使用枚举来定义应用程序要返回的退出代码 . FlagsAttribute将允许您返回代码组合 .
另外,请确保将您的应用程序编译为“控制台应用程序” .
如果您打算使用David建议的方法,您还应该查看[Flags]属性 .
这允许您对枚举进行逐位操作 .
[Flags] enum ExitCodes : int { Success = 0, SignToolNotInPath = 1, AssemblyDirectoryBad = 2, PFXFilePathBad = 4, PasswordMissing = 8, SignFailed = 16, UnknownError = 32 }
然后
(ExitCodes.SignFailed | ExitCodes.UnknownError)
将是16 32. :)
System.Environment.ExitCode
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
int code = 2; Environment.Exit( code );
只需从main返回适当的代码即可 .
int main(string[] args) { return 0; //or exit code of your choice }
作为Scott Munro的answer的更新:
在C#6.0和VB.NET 14.0(VS 2015)中,需要Environment.ExitCode或Environment.Exit(exitCode)才能从控制台应用程序返回非零代码 . 更改 Main 的返回类型无效 .
在F#4.0(VS 2015)中,遵循 main 入口点的返回值 .
main
枚举选项非常好,但可以通过乘以数字来改进:
enum ExitCodes : int { Success = 0, SignToolNotInPath = 1, AssemblyDirectoryBad = 2, PFXFilePathBad = 4, PasswordMissing = 8, SignFailed = 16, UnknownError = 32 }
在出现多个错误的情况下,将特定错误号一起添加将为您提供一个唯一编号,表示检测到的错误的组合 .
例如,错误级别6只能包含错误4和2,12只能包含错误4和8,14只能包含2,4和8等 .
我的2美分:
您可以在此处找到系统错误代码:https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
您将找到典型代码,例如2表示“未找到文件”或5表示“拒绝访问” .
当您偶然发现未知代码时,您可以使用此命令找出它的含义:
net helpmsg decimal_code
例如
net helpmsg 1
回报
功能不正确
11 回答
如果您的main具有void返回签名,请使用ExitCode,否则您需要使用返回的值“设置”它 .
Environment.ExitCode Property
3个选项:
如果声明
Main
方法返回int
,则可以从Main
返回 .你可以拨打Environment.Exit(code) .
您可以使用属性设置退出代码:
Environment.ExitCode = -1;
. 如果没有其他设置返回代码或使用上面的其他选项之一,将使用此方法) .根据您的应用程序(控制台,服务,Web应用程序等),可以使用不同的方法 .
除了回答int的答案之外......还要求理智 . 请在枚举中定义退出代码,如果合适,请使用Flags . 它使调试和维护变得更加容易(而且,作为奖励,您可以轻松地在帮助屏幕上打印退出代码 - 您确实有其中一个,对吧?) .
您可以使用三种方法从控制台应用程序返回退出代码 .
修改应用程序中的
Main
方法,使其返回int
而不是void
(在VB.Net中返回Integer
而不是Sub
的函数),然后从该方法返回退出代码 .将Environment.ExitCode属性设置为退出代码 . 请注意,方法1.优先 - 如果
Main
方法返回除_1177869之外的任何内容(在VB.Net中为Sub
),则将忽略此属性的值 .将退出代码传递给Environment.Exit方法 . 这将立即终止该过程,而不是其他两种方法 .
应该遵守的一个重要标准是
0
代表'Success' .在相关主题上,请考虑使用枚举来定义应用程序要返回的退出代码 . FlagsAttribute将允许您返回代码组合 .
另外,请确保将您的应用程序编译为“控制台应用程序” .
如果您打算使用David建议的方法,您还应该查看[Flags]属性 .
这允许您对枚举进行逐位操作 .
然后
将是16 32. :)
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
只需从main返回适当的代码即可 .
作为Scott Munro的answer的更新:
在C#6.0和VB.NET 14.0(VS 2015)中,需要Environment.ExitCode或Environment.Exit(exitCode)才能从控制台应用程序返回非零代码 . 更改
Main
的返回类型无效 .在F#4.0(VS 2015)中,遵循
main
入口点的返回值 .枚举选项非常好,但可以通过乘以数字来改进:
在出现多个错误的情况下,将特定错误号一起添加将为您提供一个唯一编号,表示检测到的错误的组合 .
例如,错误级别6只能包含错误4和2,12只能包含错误4和8,14只能包含2,4和8等 .
我的2美分:
您可以在此处找到系统错误代码:https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
您将找到典型代码,例如2表示“未找到文件”或5表示“拒绝访问” .
当您偶然发现未知代码时,您可以使用此命令找出它的含义:
例如
回报