可以通过编程方式清除Visual Studio(调试)输出窗口吗?

时间:2010-03-06 05:39:53

标签: visual-studio debugging consoleappender

是否可以通过编程方式清除Visual Studio OUTPUT 窗口?例如,名为DebugView的SysInternal调试器应用程序具有specific command called DBGVIEWCLEAR ..它会清除日志窗口。

请不要说:右键单击,清除窗口..用鼠标。我知道,但那不是我想要的。

5 个答案:

答案 0 :(得分:7)

对于VS 2008,请尝试使用此代码

EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.9.0");
ide.ExecuteCommand("Edit.ClearOutputWindow", "");
System.Runtime.InteropServices.Marshal.ReleaseComObject(ide);

“VisualStudio.DTE.9.0”将从VS版本更改为版本。

答案 1 :(得分:3)

对于VS 2010:

//Add reference EnvDTE100
static void ClearOutput()
{
    EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)Marshal.GetActiveObject("VisualStudio.DTE.10.0");
    ide.ToolWindows.OutputWindow.ActivePane.Clear();
}

答案 2 :(得分:2)

第一个答案适用于Visual Studio 2005之后的任何版本,但它看起来有点不稳定。在清理控制台之前我不得不放一秒钟,并且无法比它更好。不知道为什么,但它总比没有好。它只有在您只运行一个Visual Studio实例时才有效。也许我会做一个查看RunningObjectTable的扩展来选择正确的版本。

无论如何,这或多或少都有效。

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;


namespace VisualStudioHelper {
    public class VstHelper {
        // Add a Project Reference to "Microsoft Development Environment Properties 8.0" 
        // (the one for Visual Studio, not SQL Server)
        public static void VstClearOutputWindow() {
            if (!Debugger.IsAttached)
                return;

            Application.DoEvents();
            Thread.Sleep(1000);
            EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)Marshal.GetActiveObject("VisualStudio.DTE.10.0");
            ide.ExecuteCommand("Edit.ClearOutputWindow", "");
            Marshal.ReleaseComObject(ide);
        }
    }
}

答案 3 :(得分:0)

对于VS 2019,请尝试以下代码

///添加对Interop.EnvDTE100的引用

EnvDTE80.DTE2 ide =(EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject(“ VisualStudio.DTE”);

ide.ExecuteCommand(“ Edit.ClearOutputWindow”,“”); System.Runtime.InteropServices.Marshal.ReleaseComObject(ide);

答案 4 :(得分:-2)

Console.Clear()怎么办?