如何在Visual Studio 2013中以编程方式清除输出

7

在WPF和ASP.NET-MVC应用程序中,我通过以下方式将输出打印到控制台:

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

如何通过编程方式清除输出窗口?

熵答案有效。 - Pedro77
3个回答

5
// Import EnvDTE and EnvDTE80 into your project
using EnvDTE;
using EnvDTE80;

protected void ClearOutput()
{
    DTE2 ide = (DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.12.0");
    ide.ToolWindows.OutputWindow.OutputWindowPanes.Item("Debug").Clear();
    System.Runtime.InteropServices.Marshal.ReleaseComObject(ide);
}

错误 CS0029:无法隐式将类型“void”转换为“EnvDTE.OutputWindowPane”。必须删除“OutputWindowPane pane =”部分。这样可以正常工作。这应该是正确的答案。 - Pedro77
@Pedro77 谢谢。在我的第一次尝试中,我先获取了窗格,然后清空它...意识到我可以一步完成,忘记删除分配操作了。 - entropic

1

这是我在VS2013,Win10,x64上使用的:

private static void ClearVS2013DebugWindow()
{
    // add reference to "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\PublicAssemblies\envdte.dll"
    EnvDTE.DTE ide = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.12.0");
    if (ide != null)
    {
        ide.ExecuteCommand("Edit.ClearOutputWindow", "");
            System.Runtime.InteropServices.Marshal.ReleaseComObject(ide);
    }
}

信用归功于上面的答案。


0

在底层API中,调试输出是一个单向流 - 你不应该假设它只能在Visual Studio中查看。调试输出只能由应用程序编写,如果需要更详细的控制,则应显示在应用程序的用户界面中(无论是控制台窗口,可以清除; 还是WinForms应用程序,或WPF等)


只有在调试器是Visual Studio(即使是正确的版本),而不是像DebugView这样的其他工具时,才能起作用。 - Rowland Shaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接