web-dev-qa-db-ja.com

Visual Studioの出力ウィンドウに書き込みますか?

デバッグ目的で出力ウィンドウにメッセージを書き込もうとしています。私はJavaのsystem.out.println("")のような関数を探しました。 Debug.WriteConsole.Write、そしてTrace.Writeを試しました。エラーにはなりませんが、何も表示されません。

"Define DEBUG constant"および "Define TRACE constant"オプションがチェックされています。

メニュー ツール オプション デバッグ "すべての出力ウィンドウのテキストをイミディエイトウィンドウにリダイレクトする" オプションはチェックされていない.

設定:アクティブ(デバッグ)

注:必要に応じて、ウィザードを使用して「Windowsフォームアプリケーション」としてプロジェクトを作成しました。どこを見ればいいのかわかりません。

522

System.Diagnostics名前空間を追加すると、Debug.WriteLine()を使用してIDEの出力ウィンドウにメッセージをすばやく表示できます。詳しくはこちらをご覧ください。

655
Bhargav Bhat

これはデバッグ出力ウィンドウに書き込みます。

using System.Diagnostics;

Debug.WriteLine("Send to debug output.");
136
veight

つかいます:

System.Diagnostics.Debug.WriteLine("your message here");
73
Luqman
    Debug.WriteLine

あなたが探しているものです。

そうでなければ、これをやってみてください:

メニュー ツール オプション デバッグ →チェックを外す 出力を即時に送信

50

私にとっては、 Trace 名前空間だけが動作し、Debug名前空間は動作しませんでした。

System.Diagnostics.Trace.WriteLine("message");

私はVisual Studio 2010のC#プロジェクトで働いています。

20
Zac

あなたが探しているのかも

MessageBox.Show()

または

Debug.Writeline()
16
dansasu11

呼び出し

System.Diagnostics.Debug.WriteLine("message");

.NET Core (V 1.0または1.1)で作業すると失敗する。

Microsoft.Extensions.Loggingからロガーを作成して使用することになっていますが、そのログはdotnet.exeポップアップコンソールウィンドウにのみ表示され、Visual Studioの[出力]ウィンドウには表示されません。

9
Paul Gorbas

これにはサードパーティ製のフレームワーク、つまり Serilog が必要ですが、それでも非常にどこかに出力を得ることができる滑らかな経験であることがわかりました)。

最初にSerilogの Trace sink をインストールする必要があります。インストールしたら、次のようにロガーをセットアップする必要があります。

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .CreateLogger();

(別の最小レベルを設定するか、それを構成値または通常のSerilog機能のいずれかに設定することができます。また、Traceロガーを特定のレベルに設定して構成をオーバーライドすることもできますが、そうしたい場合もあります。)

それからあなたはただ普通にメッセージをログに記録し、それらはあなたの出力ウィンドウに現れる:

Logger.Information("Did stuff!");

これはそれほど大したことではないと思われるので、追加の利点について説明しましょう。私にとって最大のものは、 同時に出力ウィンドウとコンソールの両方にログインできることでした

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
    .CreateLogger();

これにより、Console.Writeを使ってDebug.Writeへの呼び出しをすべて複製する必要がなくなり、出力の消費方法に関して大きな柔軟性が得られました。コードを書くときは、終了時に出力が失われることを恐れずにVisual Studioでコマンドラインツールを実行できます。私がそれをデプロイして何かをデバッグする必要があったとき(そしてVisual Studioを利用できなかったとき)、コンソール出力は私の消費のためにすぐに利用可能でした。スケジュールされたタスクとして実行されている場合、同じメッセージをファイル(または他の種類のシンク)に記録することもできます。

肝心なのは、Serilogを使用してこれを実行すると、メッセージの実行方法に関係なく常に出力に簡単にアクセスできるように、メッセージを多数の宛先にダンプすることが非常に簡単になったことです。

また、最小限の設定とコードで済みます。

4
jpmc26

以下はVisual Studio 2015で私のために働きました:

OutputDebugStringW(L"Write this to Output window in VS14.");

OutputDebugStringW ここ のドキュメントを読んでください。

enter image description here あなたがあなたのコードをデバッグしている場合にだけこのメソッドが機能することに注意してください(debug mode

2
Mona Jalal

これは元の質問に対する答えではありません。しかし、対話的にオブジェクトデータをダンプする方法を探すときにこの質問を見つけたので、私は他の人がこの非常に役に立つ代替案に言及することから利益を得るかもしれないと考えました。

以下に示すように、最終的にコマンドウィンドウを使用してDebug.Printコマンドを入力しました。これはテキストとしてコピーできるフォーマットでメモリオブジェクトを印刷しました、それが私が本当に必要とするすべてです。

> Debug.Print <item>

  id: 1
  idt: null
  igad: 99
  igbd: 99
  gl_desc: "New #20"
  te_num: "1-001-001-020"
2
djabraham

Visual Studioの出力ウィンドウに印刷します。

Debug.Writeline();
1
Amir Twito