我有一个简单的.NET控制台应用程序,它只是一个较大应用程序的测试部分。我想指定控制台应用程序的“退出代码”。我该如何做?
有三种选择:
Main
方法返回int
,则可以从Main
中返回它。Environment.Exit(code)
。Environment.ExitCode = -1;
。如果没有其他选项设置返回代码或使用上述其他选项,则将使用此选项)。根据你的应用程序(控制台、服务、Web 应用程序等),可使用不同的方法。
除了回答覆盖返回int之外,还有一个关于理智的请求。请,请使用枚举定义您的退出代码,如适用,则使用标志。这将使调试和维护变得更加容易(并且作为奖励,您可以轻松地在帮助屏幕上打印出退出代码 - 您肯定有一个这样的屏幕,对吧?)。
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
),然后从该方法返回退出代码。Main
方法返回除void
之外的任何内容(在VB.Net中是一个Sub
),则此属性的值将被忽略。0
表示“成功”。Environment.ExitCode
不会立即关闭程序,但是 Environment.Exit
方法会立即关闭程序。 - PsychoDataProcess
对象启动的,您可以要求该对象WaitForExit()
,然后从中请求退出代码。 - Nyerguds如果您要使用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. :)
int code = 2;
Environment.Exit( code );
只需从主函数返回适当的代码。
int Main(string[] args)
{
return 0; // Or exit code of your choice
}
如果您的main方法具有void返回类型,请使用ExitCode。否则,您需要通过您返回的值来“设置”它。
如果Main方法返回void,则可以使用该属性设置将返回到调用环境的退出代码。如果Main不返回void,则该属性将被忽略。此属性的初始值为零。
枚举选项非常出色。然而,可以通过像下面这样将数字相乘来改进:
enum ExitCodes : int
{
Success = 0,
SignToolNotInPath = 1,
AssemblyDirectoryBad = 2,
PFXFilePathBad = 4,
PasswordMissing = 8,
SignFailed = 16,
UnknownError = 32
}
Main
的返回类型没有任何效果。main
入口点的返回值将被尊重。Main()
返回我的结果/错误代码并没有设置由调用应用程序看到的Process.ExitCode
。 - Marcus Mangelsdorfint Main
仍然可以作为Environment.ExitCode的替代选项。 - Arman
0
表示成功,非零表示失败。return;
表示通过退出码0
成功,而return -1;
则表示失败。 - allonhadaya