如何在“输出”面板中将Visual Studio的“系统调试器”消息捕获到我构建的C#WPF应用程序中?

时间:2017-02-01 02:24:21

标签: c# wpf visual-studio

首先,我要说我不知道​​应该用什么关键字来搜索它。我只想出了这个问题的标题。

我确信大多数使用Visual Studio的人已经熟悉其输出面板,它打印调试信息等。其中的一些消息由“系统调试器”本身输出(我该怎么称呼它?),我们可以通过Console.Write()Console.WriteLine()Debug.Write()等来自己写一条消息。

我想知道的是,有没有办法捕获“系统调试器”本身输出的消息到我构建的应用程序

如果您仍然无法理解我的意思,请看下图:

你可以看到这些消息不是由我手动输出的,而是由“系统调试器”输出的:

Visual Studio's Output panel

我想在我的应用程序中显示它们,比如说,TextBlock就像这样:

Illustration of what I want to do

编辑:

正如@ Andy的回答所暗示的......我已经正确地完成了每一步。但是,显然,它可以显示手动编写的调试(如Debug.Write() / WriteLine()Trace.Write() / WriteLine())的调试输出。所以,他的答案不符合我的问题。

2 个答案:

答案 0 :(得分:2)

如果您创建一个派生自TraceListener的新类,然后将该类的实例添加到Debug.Listeners集合,则只要在Visual中将某些内容写入调试输出,就应调用该类工作室。

在高级别,我会实现这样的事情:

  • 在从TraceListener派生的类中,添加一个事件。无论何时调用任何Write()方法,都要触发此事件,并将该文本包含在事件的EventArgs中。
  • 在主窗口中,创建TraceListener的实例。将其添加到Debug.Listeners集合,然后订阅该活动。
  • TraceListener活动的处理程序中,将EventArgs中的文字添加到TextBlock

答案 1 :(得分:0)

实际上,您正在回答与此Capture debug output in C#

相同的问题

因此您可以使用该问题的答案

或替代使用MS DebugView工具,如此处https://wpf.2000things.com/2017/06/29/1212-viewing-wpf-trace-output-outside-of-visual-studio/

所述