c# – 如何清除调试器输出窗口Visual Studio 2012

对于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?

最佳答案
这是我实现它的方式.请注意对另一个帮助我的问题的答案.

'   #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 https://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

转载注明原文:c# – 如何清除调试器输出窗口Visual Studio 2012 - 代码日志