2010-03-06 4 views
17

ist es möglich, eine Möglichkeit zu haben, das Visual Studio OUTPUT Fenster programmgesteuert zu löschen? Zum Beispiel hat die SysInternal Debugger-App namens DebugView die specific command called DBGVIEWCLEAR .. die das Protokollfenster löscht.Kann das Visual Studio (Debug) Ausgabefenster programmgesteuert gelöscht werden?

Bitte nicht sagen: Rechtsklick, Fenster löschen .. mit der Maus. Ich weiß das, aber das ist nicht das wonach ich suche.

+0

I habe in der Vergangenheit geguckt und kam zu kurz. hoffentlich ist jemand hartnäckiger und kann etwas Licht abwerfen ... –

Antwort

6

Für VS 2008 versuchen, diesen 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" wird von VS Version zu Version ändern.

+0

welche assembly/namespace muss ich referenzieren f oder EnvDTE80? (BTW. Ich bin auf VS2010). –

+0

Hinzugefügt EnvDTE.dll und EnvDTE80.dll. –

+0

Also bedeutet dies, dass dieser Code SEHR Visual Studio Version abhängig ist? (Und es funktioniert nicht in VS2010 RC ... auch wenn ich zu 'GetActiveObject (" VisualStudio.DTE.10.0 ") wechseln;' Kompiliert und läuft, aber das Fenster nicht gelöscht. –

-2

Was ist mit Console.Clear()?

+2

Das funktioniert nur in einer Konsolen App :(http://stackoverflow.com/questions/766173/how-to-clear -die-console-in-c-net –

2

Die erste Antwort funktioniert nach jeder Veröffentlichung nach Visual Studio 2005, aber es scheint ein wenig flockig. Ich musste eine Verzögerung von 1 Sekunde einlegen, bevor ich die Konsole löschte und ich konnte es nicht besser machen. Keine Ahnung warum, aber es ist besser als nichts. Es funktioniert auch nur, wenn Sie nur eine Instanz von Visual Studio ausführen. . Vielleicht "Ich werde eine Erweiterung machen, die die richtige Version auf dem Running sieht holen

Auf jeden Fall funktioniert dies mehr oder weniger

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

Ich habe "Ungültige Klassenzeichenfolge (Ausnahme von HRESULT: 0x800401F3 (CO_E_CLASSSTRING))" in EnvDTE80.DTE2 ide = (EnvDTE80.DTE2) Marshal.GetActiveObject ("VisualStudio .DTE.10.0 "); –

+0

Diese Zeichenfolge funktioniert nur mit Visual Studio 2010 oder höher. Wenn Sie eine frühere Version verwenden, müssen Sie die 10.10-Datei in eine andere Nummer ändern. Wenn Sie 2010 oder höher ausführen , es sollte funktionieren.Sie können mein völlig undokumentiertes http://wademan.com/Tools/RunningObjectTableDump.zip-Dienstprogramm verwenden, um zu sehen, welche Objekte aktuell gerade ausgeführt werden.Ich habe den Code in diesem Post seit langem nicht mehr verwendet, also Ich habe es nie mit 2013 getestet. –

+0

Ich denke, mein Problem ist, dass ich tr Ich wollte es mit Sharepoint Saver auf aspx mit cskdev tun –

3

Für 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

Mit '" VisualStudio.DTE.12.0 "' es funktioniert auch gut in VS 2013 ... – ChrFin