我在. net中有一个简单的控制台应用程序。这只是一个更大应用程序的测试部分。我想指定控制台应用程序的“退出代码”。我怎么做呢?


当前回答

使用这段代码

Environment.Exit(0);

如果你不想返回任何东西,就使用0作为int。

其他回答

有三种方法可用于从控制台应用程序返回退出代码。

Modify the Main method in your application so that it returns an int instead of void (a function that returns an Integer instead of Sub in VB.NET) and then return the exit code from that method. Set the Environment.ExitCode property to the exit code. Note that method 1. takes precedence - if the Main method returns anything other than void (is a Sub in VB.Net) then the value of this property will be ignored. Pass the exit code to the Environment.Exit method. This will terminate the process immediately as opposed to the other two methods.

应该遵守的一个重要标准是,0代表“成功”。

在相关主题中,考虑使用枚举定义应用程序将返回的退出代码。FlagsAttribute将允许您返回代码的组合。

此外,确保您的应用程序被编译为“控制台应用程序”。

换一种说法:

public static class ApplicationExitCodes
{
    public static readonly int Failure = 1;
    public static readonly int Success = 0;
}

作为斯科特·门罗回答的更新:

在c# 6.0和VB中。NET 14.0 (Visual Studio 2015),或环境。ExitCode或Environment.Exit(ExitCode)用于从控制台应用程序返回非零代码。改变Main的返回类型没有效果。 在f# 4.0 (Visual Studio 2015)中,主入口点的返回值被尊重。

除了包含返回int的答案之外…这是对理智的恳求。请,请在枚举中定义您的退出代码,如果合适的话,请标记。它使调试和维护变得更加容易(而且,作为奖励,您可以轻松地在帮助屏幕上打印出退出代码——您确实有一个退出代码,对吧?)

enum ExitCode : int {
  Success = 0,
  InvalidLogin = 1,
  InvalidFilename = 2,
  UnknownError = 10
}

int Main(string[] args) {
   return (int)ExitCode.Success;
}

只需从main返回相应的代码。

int Main(string[] args)
{
    return 0; // Or exit code of your choice
}