对于VS 2012,我无法使用以下MSDN code,
清除调试器输出窗口基本上我无法将DTE2对象传递给ClearExample
。
public void ClearExample(DTE2 dte)
{
// Retrieve the Output window.
OutputWindow outputWin = dte.ToolWindows.OutputWindow;
// Find the "Test Pane" Output window pane; if it doesn't exist,
// create it.
OutputWindowPane pane = null;
try
{
pane = outputWin.OutputWindowPanes.Item("Test Pane");
}
catch
{
pane = outputWin.OutputWindowPanes.Add("Test Pane");
}
// Show the Output window and activate the new pane.
outputWin.Parent.AutoHides = false;
outputWin.Parent.Activate();
pane.Activate();
// Add a line of text to the new pane.
pane.OutputString("Some text." + "\r\n");
if (MessageBox.Show("Clear the Output window pane?", "",
MessageBoxButtons.YesNo) == DialogResult.Yes)
pane.Clear();
}
使用其他SO链接无法使其适用于VS2012。
Is it possible to programmatically clear the Ouput Window in Visual Studio?
Can the Visual Studio (debug) Output window be programatically cleared?
答案 0 :(得分:5)
以下是我实施它的方式。请注意对另一个帮助我的问答的引用。
' #region ClearOutputWindow
/// <summary>
/// Clear the Output window-pane of Visual Studio.
/// Note: Causes a 1-second delay.
/// </summary>
public static void ClearOutputWindow()
{
if (!Debugger.IsAttached)
{
return;
}
//Application.DoEvents(); // This is for Windows.Forms.
// This delay to get it to work. Unsure why. See http://stackoverflow.com/questions/2391473/can-the-visual-studio-debug-output-window-be-programatically-cleared
Thread.Sleep(1000);
// In VS2008 use EnvDTE80.DTE2
EnvDTE.DTE ide = (EnvDTE.DTE)Marshal.GetActiveObject("VisualStudio.DTE.10.0");
if (ide != null)
{
ide.ExecuteCommand("Edit.ClearOutputWindow", "");
Marshal.ReleaseComObject(ide);
}
}
#endregion