1. ホーム
  2. c#

[解決済み] System.Diagnostics.Debug.Writeの出力はどこに表示されるのですか?

2022-04-26 14:05:15

質問

以下のC#プログラム(ビルド時に csc hello.cs を表示します。 Hello via Console! をコンソールに表示し Hello via OutputDebugString をDebugViewウィンドウに表示します。しかし System.Diagnostics.* を呼び出します。なぜでしょうか?

using System;
using System.Runtime.InteropServices;
class Hello {
    [DllImport("kernel32.dll", CharSet=CharSet.Auto)]
    public static extern void OutputDebugString(string message);

    static void Main() {
        Console.Write( "Hello via Console!" );
        System.Diagnostics.Debug.Write( "Hello via Debug!" );
        System.Diagnostics.Trace.Write( "Hello via Trace!" );
        OutputDebugString( "Hello via OutputDebugString" );
    }
}

には、何か特別なコマンドラインスイッチが必要なのでしょうか? csc ?

私はVisual Studioを使った開発をしていないので、これは純粋にコマンドラインのものです。

どのように解決するのですか?

他の方が指摘されているように、これらのストリームを読むためには、リスナーを登録する必要があります。また、以下の点にも注意してください。 Debug.WriteDEBUG ビルドフラグが設定され、一方 Trace.WriteTRACE ビルドフラグが設定されています。

を設定します。 DEBUG および TRACE フラグは、Visual Studioのプロジェクトプロパティで設定するか、csc.exeに次の引数を与えることで簡単に設定できます。

<ブロッククオート

/define:DEBUG;TRACE