2014-09-02 17 views

risposta

0

All'interno delle API sottostanti, l'output di debug è un flusso solo diretto - you shouldn't assume that it is only viewable within Visual Studio. L'output di debug può essere scritto solo da un'applicazione e, se è necessario un controllo più dettagliato, deve essere mostrato nell'interfaccia utente dell'applicazione (indipendentemente dal fatto che sia una finestra della console, che può essere cancellata, o un'applicazione WinForms o WPF, ecc)

+0

C'è un modo, come mostrato da @entropic. – Pedro77

+0

Funzionerebbe solo quando il debugger è Visual Studio (e anche in quel caso, la versione corretta) e non qualcos'altro come DebugView errore –

3
// Import EnvDTE and EnvDTE80 into your project 
using EnvDTE; 
using EnvDTE80; 

protected void ClearOutput() 
{ 
    DTE2 ide = (DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.12.0"); 
    ide.ToolWindows.OutputWindow.OutputWindowPanes.Item("Debug").Clear(); 
    System.Runtime.InteropServices.Marshal.ReleaseComObject(ide); 
} 
+0

CS0029: Impossibile convertire implicitamente il tipo 'void' in 'EnvDTE.OutputWindowPane'. È necessario rimuovere la parte "OutputWindowPane pane =". Funziona. Questa dovrebbe essere la risposta corretta. – Pedro77

+0

@ Pedro77 Grazie. Nel mio primo tentativo ho afferrato il pannello, poi l'ho cancellato ... ho capito che posso farlo in un solo passaggio e ho dimenticato di rimuovere il compito. – entropic

0

Questo è ciò che mi trovavo in VS2013, Win10, x64:

private static void ClearVS2013DebugWindow() 
    { 
     // add reference to "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\PublicAssemblies\envdte.dll" 
     EnvDTE.DTE ide = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.12.0"); 
     if (ide != null) 
     { 
      ide.ExecuteCommand("Edit.ClearOutputWindow", ""); 
      System.Runtime.InteropServices.Marshal.ReleaseComObject(ide); 
     } 
    } 

credito alle risposte di cui sopra.

Problemi correlati