是否可以通过编程方式清除Visual Studio OUTPUT 窗口?例如,名为DebugView的SysInternal调试器应用程序具有specific command called DBGVIEWCLEAR ..它会清除日志窗口。
请不要说:右键单击,清除窗口..用鼠标。我知道,但那不是我想要的。
答案 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()怎么办?