[C#] 寫入Visual Studio的輸出窗口?


Answers

這將寫入調試輸出窗口:

using System.Diagnostics;

Debug.WriteLine("Send to debug output.");
Question

我試圖寫一個消息到輸出窗口進行調試。 我搜索了一個像Java的system.out.println("")這樣的函數。 我試過Debug.WriteConsole.WriteTrace.Write 。 它不會給出錯誤,但它也不會打印任何內容。

檢查“定義DEBUG常量”和“定義TRACE常量”選項。

菜單工具選項調試“將所有輸出窗口文本重定向到立即窗口”選項未被選中。

配置:活動(調試)

注意:如果相關,我使用嚮導創建了一個項目為“Windows窗體應用程序”。 我不知道在哪裡看。




    Debug.WriteLine

是你在找什麼。

如果沒有,請嘗試這樣做:

菜單工具選項調試 →取消選中發送輸出到立即




你可能正在尋找

MessageBox.Show()

要么

Debug.Writeline()



這需要一個第三方框架,即Serilog ,但我仍然發現它是一個非常順利的經驗,獲得輸出到某個地方,我可以看到它。

你首先需要安裝Serilog的跟踪接收器 。 一旦安裝,你需要像這樣設置記錄器:

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.WriteDebug.Write 。 編寫代碼時,我可以在Visual Studio中運行我的命令行工具,而不必擔心在退出時丟失輸出。 當我部署了它並且需要調試某些東西(並且沒有Visual Studio可用)時,控制台輸出已經可以供我使用了。 作為計劃任務運行時,也可以將相同的消息記錄到文件(或任何其他類型的接收器)中。

最重要的是,使用Serilog來做到這一點使得將消息轉儲到多個目的地非常容易,確保我可以隨時訪問輸出,而不管我如何運行它。

它也需要非常少的設置和代碼。




以下在Visual Studio 2015為我工作:

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

這裡閱讀OutputDebugStringW的文檔。

請注意,此方法僅適用於您正在調試您的代碼( debug mode