我在.NET中有一个简单的控制台应用程序。它只是更大应用程序的测试部分。我想指定我的控制台应用程序的“退出代码”。我该怎么做?
答案 0 :(得分:547)
3个选项:
Main
方法返回Main
,则可以从int
返回。Environment.Exit(code)
。Environment.ExitCode = -1;
。如果没有其他设置返回代码或使用上述其他选项之一,则将使用此方法。根据您的应用程序(控制台,服务,Web应用程序等),可以使用不同的方法。
答案 1 :(得分:254)
除了回答int的答案之外......还要求理智。请在枚举中定义退出代码,如果合适,请使用Flags。它使调试和维护变得更加容易(而且,作为奖励,您可以轻松地在帮助屏幕上打印退出代码 - 您确实有其中一个,对吧?)。
enum ExitCode : int {
Success = 0,
InvalidLogin = 1,
InvalidFilename = 2,
UnknownError = 10
}
int Main(string[] args) {
return (int)ExitCode.Success;
}
答案 2 :(得分:46)
您可以使用三种方法从控制台应用程序返回退出代码。
Main
方法,使其返回int
而不是void
(一个返回Integer
而不是Sub
的函数VB.Net)然后从该方法返回退出代码。Main
方法返回除void
以外的任何内容(在VB.Net中为Sub
),则此属性的值将被忽略。应该遵守的一个重要标准是0
代表'成功'。
在相关主题上,请考虑使用枚举来定义应用程序要返回的退出代码。 FlagsAttribute将允许您返回代码组合。
另外,请确保将您的应用程序编译为“控制台应用程序”。
答案 3 :(得分:25)
System.Environment.ExitCode
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
答案 4 :(得分:24)
int code = 2;
Environment.Exit( code );
答案 5 :(得分:11)
只需从main返回相应的代码。
int main(string[] args)
{
return 0; //or exit code of your choice
}
答案 6 :(得分:11)
如果您的main有一个void返回签名,请使用ExitCode,否则您需要按照返回的值“设置”它。
如果Main方法返回void,则可以使用此属性设置将返回到调用环境的退出代码。如果Main不返回void,则忽略此属性。此属性的初始值为零。
答案 7 :(得分:8)
作为Scott Munro answer的更新:
Main
的返回类型无效。main
入口点的返回值。答案 8 :(得分:7)
枚举选项非常出色,但可以通过将数字相乘来改进:
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等。
答案 9 :(得分:3)
我的2美分:
您可以在此处找到系统错误代码: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
您会找到典型的代码,例如2代表“找不到文件”,或者5代表“拒绝访问”。
当您偶然发现未知代码时,您可以使用此命令找出其含义:
net helpmsg decimal_code
e.g。
net helpmsg 1
返回
功能不正确
答案 10 :(得分:0)
使用此代码
Environment.Exit(0);
如果不想返回任何内容,请使用0作为int。
答案 11 :(得分:0)
另一种方式:
public static class ApplicationExitCodes
{
public static readonly int Failure = 1;
public static readonly int Success = 0;
}
答案 12 :(得分:0)
我就是这样做的
int exitCode = 0;
Enviroment.Exit(exitCode);
或者你可以抛出错误(个人喜好)
throw new ArgumentException("Code 0, Enviroment Exit");
我选择了 ArgumentException,但您可以输入其他。它会正常工作。