Can the Visual Studio (debug) Output window be programmatically cleared?

后端 未结 5 2039
一个人的身影
一个人的身影 2020-12-15 06:30

is it possible to have a way to clear the Visual Studio OUTPUT window, programmatically? For example, the SysInternal\'s debugger app called DebugView has the speci

相关标签:
5条回答
  • 2020-12-15 07:11

    For VS 2010 :

    //Add reference EnvDTE100
    static void ClearOutput()
    {
        EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)Marshal.GetActiveObject("VisualStudio.DTE.10.0");
        ide.ToolWindows.OutputWindow.ActivePane.Clear();
    }
    
    0 讨论(0)
  • 2020-12-15 07:16

    What about Console.Clear()?

    0 讨论(0)
  • 2020-12-15 07:21

    For VS 2008 try this code

    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" will change from VS version to version.

    0 讨论(0)
  • 2020-12-15 07:21

    The first answer works on any release after Visual Studio 2005, but it seems a little flaky. I had to put a 1 second delay before clearing the console and couldn't get it any better than that. No idea why, but it's better than nothing. It also only works if you're only running one instance of Visual Studio. Maybe I"ll make an extension that looks at the RunningObjectTable to pick the right version.

    At any rate, this works more or less.

    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);
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-15 07:31

    For VS 2019 try this code

    //Add reference to Interop.EnvDTE100

    EnvDTE80.DTE2 ide = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE");

    ide.ExecuteCommand("Edit.ClearOutputWindow", ""); System.Runtime.InteropServices.Marshal.ReleaseComObject(ide);

    0 讨论(0)
提交回复
热议问题