4

私のC#コードでは、1つの関数にラップDebug.WriteLine()Console.WriteLine()て、デバッグモードのデバッグウィンドウとリリースモードのコンソールをターゲットにするようにしたいと思います。それを達成するための最良の方法は何ですか?私はC#を初めて使用します。ありがとう。

4

3 に答える 3

4

System.Diagnostics.Traceクラスを見てください。

トレースには、DebugクラスおよびConsoleクラスと同様のWriteLine()メソッドが含まれており、実行時または構成ファイル( ConsoleTraceListerDefaultTraceListner(デバッグ用)、TextWriterTraceListener(ファイル用)、EventLogTraceListener、またはデータベーステーブルやsyslogdアグリゲーターなどの場所に書き込むためのを作成できます。

代わりにTraceを使用するように、DebugまたはConsoleへの現在のすべての呼び出しを変更し、使用するリスナーを設定することができます。Traceメソッドにはいくつかのフォーマット機能が欠けていることに注意してください。ただし、構成可能な出力ソースはそれを補って余りあると思います。

于 2013-02-05T05:45:13.430 に答える
4

常にDebug.WriteLineを使用し、プログラムの先頭に次の行を追加します。

#if !DEBUG
            var listeners = new TraceListener[] { new TextWriterTraceListener(Console.Out) };
            Debug.Listeners.AddRange(listeners);
#endif
于 2013-02-05T08:07:03.783 に答える
1

Joelの答えに加えて、別の非常に単純な解決策は次のようになります。

private void writeLine(String s)
{

    #if DEBUG
        Debug.WriteLine(s);
    #else
        Console.WriteLine(s);
    #endif
}

これはプリプロセッサディレクティブを使用するため、リリースモード以外ではコンソールに書き込まれません。Debugプリプロセッサディレクティブがなくても、リリースビルド中にすべての呼び出しが削除されるため、少し冗長であることに注意してください。

于 2013-02-05T06:00:01.000 に答える