C# コンソール アプリケーションを実装する正しい方法は? 質問する

C# コンソール アプリケーションを実装する正しい方法は? 質問する

コマンドライン ツールを C# コンソール アプリケーションとして実装および設計する正しい方法は何ですか?

対処すべき懸念事項には、コマンド ライン変数の適切な解析と、テキストの適切な出力方法が含まれます。出力には Console.WriteLine() が最も明白な選択肢ですが、代わりに標準エラー ストリーム、.Error、.SetErrorStream などに書き込むことを選択する必要がある状況とはどのようなものでしょうか。

呼び出しコマンドに適切な戻りコードを返しながらアプリケーションを終了する適切な方法は何ですか?

プログラムを中断するには、CancelKeyPress イベントをどのように実装すればよいですか? これは、別のスレッドで非同期操作が行われている場合にのみ使用されるのですか?

C# でのコマンド ライン ツール プログラミングに関する簡潔なガイドはありますか? あるいは、比較的単純なツールを適切に実装するために使用できるオープン ソース プロジェクトやテンプレートなどがあればなお良いでしょうか?

ベストアンサー1

エラー メッセージは stderr (別名 Console.Error) に書き込まれ、通常の出力は stdout (別名 Console.Out) に書き込まれます。これは、出力 (stdout) を別のプロセス (たとえばバッチ ファイル) にパイプできる「フィルター」タイプのコンソール アプリにとって特に重要です。

通常、エラーが発生した場合は、Console.Error にエラー メッセージを書き込み、ゼロ以外の結果を返します。例外の場合は、処理する必要はありません。

結果コードを返すには、Environment.Exit に引数として渡すか、Environment.ExitCode プロパティを設定するか、main からゼロ以外の値を返します。

シンプルなコンソール アプリの場合は次のようになります。

  • コマンドラインを解析するためのヘルパークラスがあります。

  • コマンドライン ツールによって実装された機能に対してテスト可能な API を提供するファサード クラスがあります。ほとんどの .NET API と同様に、エラーが発生すると通常は例外がスローされます。

  • メイン プログラムは、ヘルパーを使用してコマンド ラインを解析し、コマンド ラインから渡された引数を渡して API を呼び出すだけです。オプションで、API からスローされた例外をキャッチしてログに記録し、ユーザー向けのエラー メッセージを Console.Error に書き込み、ゼロ以外の戻りコードを設定します。

しかし、私はこれが唯一の正しい方法だとは考えていません。実際にそのような方法は存在しないので、探している本が見つからない可能性が高いのです。

おすすめ記事