デバッグ目的で出力ウィンドウにメッセージを書き込もうとしています。私はJavaのsystem.out.println("")
のような関数を探しました。 Debug.Write
、Console.Write
、そしてTrace.Write
を試しました。エラーにはなりませんが、何も表示されません。
"Define DEBUG constant"および "Define TRACE constant"オプションがチェックされています。
メニュー ツール → オプション → デバッグ → "すべての出力ウィンドウのテキストをイミディエイトウィンドウにリダイレクトする" オプションはチェックされていない.
設定:アクティブ(デバッグ)
注:必要に応じて、ウィザードを使用して「Windowsフォームアプリケーション」としてプロジェクトを作成しました。どこを見ればいいのかわかりません。
System.Diagnostics
名前空間を追加すると、Debug.WriteLine()
を使用してIDEの出力ウィンドウにメッセージをすばやく表示できます。詳しくはこちらをご覧ください。
これはデバッグ出力ウィンドウに書き込みます。
using System.Diagnostics;
Debug.WriteLine("Send to debug output.");
つかいます:
System.Diagnostics.Debug.WriteLine("your message here");
Debug.WriteLine
あなたが探しているものです。
そうでなければ、これをやってみてください:
メニュー ツール → オプション → デバッグ →チェックを外す 出力を即時に送信 。
私にとっては、 Trace 名前空間だけが動作し、Debug名前空間は動作しませんでした。
System.Diagnostics.Trace.WriteLine("message");
私はVisual Studio 2010のC#プロジェクトで働いています。
あなたが探しているのかも
MessageBox.Show()
または
Debug.Writeline()
呼び出し
System.Diagnostics.Debug.WriteLine("message");
.NET Core (V 1.0または1.1)で作業すると失敗する。
Microsoft.Extensions.Logging
からロガーを作成して使用することになっていますが、そのログはdotnet.exeポップアップコンソールウィンドウにのみ表示され、Visual Studioの[出力]ウィンドウには表示されません。
これにはサードパーティ製のフレームワーク、つまり 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を使用してこれを実行すると、メッセージの実行方法に関係なく常に出力に簡単にアクセスできるように、メッセージを多数の宛先にダンプすることが非常に簡単になったことです。
また、最小限の設定とコードで済みます。
以下はVisual Studio 2015
で私のために働きました:
OutputDebugStringW(L"Write this to Output window in VS14.");
OutputDebugStringW ここ のドキュメントを読んでください。
これは元の質問に対する答えではありません。しかし、対話的にオブジェクトデータをダンプする方法を探すときにこの質問を見つけたので、私は他の人がこの非常に役に立つ代替案に言及することから利益を得るかもしれないと考えました。
以下に示すように、最終的にコマンドウィンドウを使用してDebug.Print
コマンドを入力しました。これはテキストとしてコピーできるフォーマットでメモリオブジェクトを印刷しました、それが私が本当に必要とするすべてです。
> Debug.Print <item>
id: 1
idt: null
igad: 99
igbd: 99
gl_desc: "New #20"
te_num: "1-001-001-020"
Visual Studioの出力ウィンドウに印刷します。
Debug.Writeline();