如何在 Visual Studio 2012+ 中过滤输出?

How to filter output in Visual Studio 2012+?

我在 Visual Studio 2015 年检查我的 Debug.WriteLn 输出中的特定内容时遇到问题。(2012 年和 2013 年版本也是如此。)

XCode 和 Eclipse 都在 Output window 之上包含一个过滤器框。我试图为 Visual Studio 找到类似的扩展名,但我没有运气。有什么办法可以有类似的功能并过滤输出window?

VS 中的各种服务写入输出 window 因此有一个基于源的内置过滤器。您通常可以 select 来源,例如 "Build Output"、"Test discovery"、"General"、"Debug" 等

Debug.Write 调用被 VS 拦截,文本最终出现在输出 window 中,但没有内置过滤。

我可以想到 3 种解决方法:

  1. 使用DbgView拦截Debug.Write消息,而不是让VS拦截它们。 DbgView 具有非常强大的过滤和着色功能*
  2. 尝试this extension根据正则表达式为输出着色
  3. 写你自己的扩展(没那么难!)

(*) 如果你走这条路,请注意 Debug.Write 只是一个跟踪,当你附加 VS 调试器时,它会将自己添加为跟踪列表器。 DbgView 也一样。但是,当您分离时,它不会删除侦听器并且消息将会丢失。

我用的是这个方法:

打开调试 - 输出 window,只需右键单击 Window。

您可以根据需要勾选/取消勾选。

我刚刚在 VS 2017 中发现的一件事(我认为它也在其他版本中)是:

Tools | Options | Debugging | General > Redirect all Output Window text to the Immediate Window

这只为您提供程序的 Debug.WriteX 立即输出 window 并在输出中留下所有其他垃圾 window,您可以将其关闭。

如果出于某种原因需要,我仍然可以查看输出中的垃圾 window;它没有被压制。它只是没有进入直接 window.

我只是让小的直接 window 停靠在底部。

我认为这很好,因为输出中出现了所有垃圾 window,与使用条款协议(也就是说, 大约 none), 所以婴儿和洗澡水一起被倒掉了。但现在我实际上看到一些程序调试输出,你瞧,需要注意。

恕我直言,Microsoft 应该扩展输出 window 下拉框以包括 FetFrumos 在他的回答中指出的所有类别,因此开发人员可以将其设置为 "Program Output"。我认为这将是一个很好的改进。

多年来我一直想过滤 Visual Studio 输出。最终我决定写一个扩展来做到这一点。有兴趣的可以去niahtextfilter.com.

看看

这是它的作用的一个想法: