Можно ли программно очистить окно вывода Visual Studio (отладка)?
Можно ли как-то программно очистить окно ВЫХОД Visual Studio? Например, приложение отладчика SysInternal под названием DebugView имеет специальную команду DBGVIEWCLEAR.., которая очищает окно журнала.
Пожалуйста, не говорите: щелкните правой кнопкой мыши, очистите окно... с помощью мыши. Я знаю это, но это не то, к чему я стремлюсь.
4 ответа
Для 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);