私のC#コードでは、1つの関数にラップDebug.WriteLine()
しConsole.WriteLine()
て、デバッグモードのデバッグウィンドウとリリースモードのコンソールをターゲットにするようにしたいと思います。それを達成するための最良の方法は何ですか?私はC#を初めて使用します。ありがとう。
3 に答える
System.Diagnostics.Traceクラスを見てください。
トレースには、DebugクラスおよびConsoleクラスと同様のWriteLine()メソッドが含まれており、実行時または構成ファイル( ConsoleTraceLister、DefaultTraceListner(デバッグ用)、TextWriterTraceListener(ファイル用)、EventLogTraceListener、またはデータベーステーブルやsyslogdアグリゲーターなどの場所に書き込むためのを作成できます。
代わりにTraceを使用するように、DebugまたはConsoleへの現在のすべての呼び出しを変更し、使用するリスナーを設定することができます。Traceメソッドにはいくつかのフォーマット機能が欠けていることに注意してください。ただし、構成可能な出力ソースはそれを補って余りあると思います。
常にDebug.WriteLineを使用し、プログラムの先頭に次の行を追加します。
#if !DEBUG
var listeners = new TraceListener[] { new TextWriterTraceListener(Console.Out) };
Debug.Listeners.AddRange(listeners);
#endif
Joelの答えに加えて、別の非常に単純な解決策は次のようになります。
private void writeLine(String s)
{
#if DEBUG
Debug.WriteLine(s);
#else
Console.WriteLine(s);
#endif
}
これはプリプロセッサディレクティブを使用するため、リリースモード以外ではコンソールに書き込まれません。Debug
プリプロセッサディレクティブがなくても、リリースビルド中にすべての呼び出しが削除されるため、少し冗長であることに注意してください。