是否有可能以编程方式清除 Visual Studio OUTPUT窗口?例如,SysInternal 的名为 DebugView 的调试器应用程序具有名为 DBGVIEWCLEAR .. 的特定命令,可清除日志窗口。
请不要说:右键单击,清除窗口..用鼠标。我知道,但这不是我所追求的。
是否有可能以编程方式清除 Visual Studio OUTPUT窗口?例如,SysInternal 的名为 DebugView 的调试器应用程序具有名为 DBGVIEWCLEAR .. 的特定命令,可清除日志窗口。
请不要说:右键单击,清除窗口..用鼠标。我知道,但这不是我所追求的。
对于 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 版本更改为版本。
对于 VS 2010:
//Add reference EnvDTE100
static void ClearOutput()
{
EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)Marshal.GetActiveObject("VisualStudio.DTE.10.0");
ide.ToolWindows.OutputWindow.ActivePane.Clear();
}
第一个答案适用于 Visual Studio 2005 之后的任何版本,但似乎有点不稳定。在清除控制台之前,我不得不延迟 1 秒,而且没有比这更好的了。不知道为什么,但总比没有好。它也仅在您只运行一个 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);
}
}
}
对于 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);
Console.Clear()怎么样?