517

.NET で簡単なコンソール アプリケーションを使用しています。これは、より大きなアプリケーションのテスト部分にすぎません。コンソール アプリケーションの「終了コード」を指定したいと思います。どうすればいいですか?

4

14 に答える 14

668

3 つのオプション:

  • メソッドを return にMain宣言すると、から返すことができます。Mainint
  • を呼び出すことができますEnvironment.Exit(code)
  • プロパティを使用して終了コードを設定できますEnvironment.ExitCode = -1;。これは、戻りコードを設定するものが他にない場合、または上記の他のオプションのいずれかを使用する場合に使用されます)。

アプリケーション (コンソール、サービス、Web アプリケーションなど) に応じて、さまざまな方法を使用できます。

于 2008-09-30T23:47:57.330 に答える
295

return int をカバーする回答に加えて...正気を求めて。必要に応じてフラグを使用して、列挙型で終了コードを定義してください。これにより、デバッグとメンテナンスが非常に簡単になります (さらに、おまけとして、ヘルプ画面に終了コードを簡単に出力できます。それらのいずれかをお持ちですよね?)。

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

int Main(string[] args) {
   return (int)ExitCode.Success;
}
于 2008-10-01T03:30:01.557 に答える
55

コンソールアプリケーションから終了コードを返すために使用できるメソッドは3つあります。

  1. Mainアプリケーションのメソッドを変更して、代わりintに(VB.NETで代わりにvoidを返す関数)を返すようにしてから、そのメソッドから終了コードを返します。IntegerSub
  2. Environment.ExitCodeプロパティを終了コードに設定します。メソッド1が優先されることに注意してください。メソッドが(VB.Netではaである)Main以外のものを返す場合、このプロパティの値は無視されます。voidSub
  3. 終了コードをEnvironment.Exitメソッドに渡します。これにより、他の2つの方法とは対照的に、プロセスがすぐに終了します。

遵守すべき重要な基準は、0「成功」を表すことです。

関連するトピックでは、列挙型を使用して、アプリケーションが返す終了コードを定義することを検討してください。FlagsAttributeを使用すると、コードの組み合わせを返すことができます

また、アプリケーションが「コンソールアプリケーション」としてコンパイルされていることを確認してください。

于 2012-08-26T23:07:24.043 に答える
44

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 になります。:)

于 2011-11-22T16:53:44.177 に答える
29
System.Environment.ExitCode 

Environment.ExitCode プロパティを参照してください。

于 2008-09-30T23:46:17.537 に答える
26
int code = 2;
Environment.Exit( code );
于 2008-09-30T23:46:02.607 に答える
14

メインから適切なコードを返すだけです。

int Main(string[] args)
{
    return 0; // Or exit code of your choice
}
于 2008-09-30T23:46:45.413 に答える
11

メインに void return 署名がある場合は、ExitCodeを使用します。それ以外の場合は、返す値で「設定」する必要があります。

Environment.ExitCode プロパティから:

Main メソッドが void を返す場合、このプロパティを使用して、呼び出し元の環境に返される終了コードを設定できます。Main が void を返さない場合、このプロパティは無視されます。このプロパティの初期値はゼロです。

于 2008-09-30T23:50:14.703 に答える
8

列挙オプションは優れています。ただし、次のように数値を掛けることで改善できます。

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 でのみ構成されます。

于 2011-11-21T23:45:59.667 に答える
3

システム エラー コードは、システム エラー コード (0-499)で確認できます。

「ファイルが見つかりません」の場合は 2、「アクセスが拒否されました」の場合は 5 など、典型的なコードが見つかります。

また、不明なコードに出くわした場合は、次のコマンドを使用してその意味を調べることができます。

net helpmsg decimal_code

例えば、

net helpmsg 1

戻り値

Incorrect function
于 2016-08-10T12:38:15.173 に答える
-2

別の方法:

public static class ApplicationExitCodes
{
    public static readonly int Failure = 1;
    public static readonly int Success = 0;
}
于 2020-10-17T19:00:31.870 に答える