2010-03-24 3 views

Antwort

4

Sicher, standardmäßig Tracing schreibt in das Ausgabefenster mit der DefaultTraceListener, die eine Implementierung der TraceListener Klasse ist.

zu einem separaten Ausgang zu schreiben, um Sie auf eine der vorge geliefert Alternative TraceListener s verwenden benötigen oder Ihren eigenen (Umgang, auf einem Minimum implementieren, Write() und WriteLine(), dann Hörer in der Konfigurationsdatei registrieren.

+0

Ich habe das tatsächlich in der Vergangenheit getan - es ist sehr nützlich. In diesem Fall spreche ich jedoch über das andockenfähige "Output" -Fenster von Visual Studio. Es wäre nett, Console-, Debug- und Trace-Nachrichten separat zu überwachen, anstatt alle in dieses eine Fenster zu schreiben (mit der Nachricht zum Laden der Assembly und der ersten Möglichkeit der Exception-Meldung). – Pwninstein

+0

Ja, Sie könnten also ein Visual Studio-Plug-in schreiben, das separate Fenster für jeden Benutzer bereitstellt - zusammen mit benutzerdefinierten TraceListenern, um die Ausgabe an Ihr Plugin zu senden. Standardmäßig schreibt der 'DefaultTraceListener' jedoch ausschließlich in das' Output'-Fenster - und Visual Studio fügt ihn der Listeners-Sammlung der Anwendung hinzu - so gibt es keinen Point-and-Click-Weg, um das zu erreichen, was Sie wollen – STW

+1

Sie können einfach "Deaktivieren", dass die Assembly-Last und die Ausnahme der ersten Chance nicht in das Debug-Ausgabefenster ausgegeben werden. Klicken Sie einfach mit der rechten Maustaste in dieses Fenster und im unteren Bereich des Popup-Menüs finden Sie Optionen, um die Anzeige von Ausnahmen und das Laden und Entladen von Nachrichten zu deaktivieren. –

2

Es gibt nur eine Option in VS, um die Ausgabe in einem anderen Fenster zu erhalten: Extras + Optionen, Debugger, Allgemein, "Leitet alle Ausgabefenster in das Direktfenster um." Das wird aber wahrscheinlich nicht tun, was Sie wollen

Es gibt keine guten Optionen für die Ausgabe in ein VS-Fenster, der einzige Mechanismus ist Windows Outp utDebugString() - API-Funktion, mit der der Debugger Meldungen sehen kann. Das wird bereits vom DefaultTraceListener verwendet. Der Visual Studio-Hostprozess unterstützt die Weiterleitung der Console.Write/Line() - Ausgabe an das Ausgabefenster. Der Mechanismus, mit dem es funktioniert, ist mir unklar, abgesehen davon, dass der Hosting-Prozess eine benutzerdefinierte gehostete Version der CLR ist. Nicht etwas, das Sie anpacken möchten, vorausgesetzt, es ist sogar möglich, es zu ersetzen.

Bei weitem der praktischste Ansatz besteht darin, einfach ein eigenes Fenster zur Anzeige der Trace-Ausgabe zu erstellen, indem Sie Ihren eigenen Trace-Listener verwenden. Einfach genug, um mit einer Windows Forms-Formularklasse zu arbeiten, die eine mehrzeilige TextBox enthält. Wie praktisch das ist, hängt von der Art Ihrer Haupt-EXE ab. Oder verfolgen Sie eine Datei und verwenden Sie einen Dateibetrachter, der schlau genug ist, um Aktualisierungen der Datei zu sehen. Ich benutze Fern.

Oh, und es gibt SysInternals 'DebugView utility. Es schnüffelt auf OutputDebugString() Text.

Verwandte Themen