コードに print ステートメントをいくつか追加して、現在の場所を表示し、重要な値をコンソール ウィンドウに出力したいと考えています。
どうすればそれを行うことができますが、リリースバージョンではオフにすることができますか?
System.Diagnostics.Debug.Print()リリース バージョンに切り替えると、すべての呼び出しが削除されます。
リリースではデバッグ レベルでログを記録し、運用環境では警告またはエラー レベルでLog4netを使用します。
これの利点は、開発で再現できない問題が発生した場合に、リリース環境でログをオンに戻すことができることです。
[編集] FWIW、テスト駆動開発を使用するようになったので、デバッグ ログが大幅に減ったことがわかりました。私のロギングのほとんどは、警告/エラーの種類です。
System.Diagnostics.Debug クラスと System.Diagnostics.Trace クラスを見てください。
デバッグとトレースは関連していますが、異なるアクティビティです。名前System.Diagnostics空間は両方をサポートします。
Debug.Write/WriteLineデバッグ メッセージをログ ファイルに書き込むために使用します。(そして出力ウィンドウへ。)Debug.Assertまあ、ほとんどどこでも使用します。DebugコードでDEBUG シンボルを定義しない場合、クラスを使用して記述したすべてのコードはコンパイル前に削除されます。これは、デバッグおよびリリース構成のオプションでデフォルトで行われます。
Trace.Write/WriteLineトレース メッセージを書き込むために使用します。これらのメソッドは、Debug クラスのメソッドと機能的に同等です。違いは、コードで TRACE シンボルを定義しない場合、それらが削除されることです。
Debug および Trace クラスには、 のような他のクラスの少し面倒なインフラストラクチャもありTextWriterTraceListenerます。これにより、トレース ログの出力をディスク上のローカル ファイルから Web サービスに変更する (または何もしない) などの気の利いたことを実行できます。アプリケーション構成ファイルを編集します。私のお気に入りのトリックは、TextWriterテキストを に書き込めるを実装し、それTextBoxを使用してすべてのデバッグおよびトレース出力を UI にリダイレクトすることです。
WriteIfおよびメソッドが尊重するアプリ構成ファイルにフラグを設定することもできますWriteLineIfが、私の経験では、それらはかなり扱いにくくなります。
一般に、独自の静的クラスを作成してTraceメソッドをラップすると、より満足できることがわかります。Traceこれにより、クラスのプロパティを設定するだけで、UI でトレースのオンとオフを切り替えることができます。
最後に、すべてのメソッドの開始時と終了時にトレースのようなことを行うためにアプリをインストルメント化する必要がある場合、そのために使用するツールは奇跡的な PostSharp です。
私が使用:System.Console.WriteLine()
#if DEBUG
System.Console.WriteLine("Message");
#endif
アスペクト指向プログラミング ソリューションを調べることもできます。彼らはこの種のことを本当にうまくやっています。良い実装として PostSharp を見てください。彼らのサンプル コードには、通常、まさに探しているものの例が含まれています。