Ich versuche, eine Meldung zum Debuggen in das Ausgabefenster zu schreiben. Ich habe nach einer Funktion wie Javas system.out.println("")
gesucht. Ich habe Debug.Write
, Console.Write
und Trace.Write
ausprobiert. Es wird kein Fehler ausgegeben, aber es wird auch nichts gedruckt.
Die Optionen "DEBUG-Konstante definieren" und "TRACE-Konstante definieren" sind markiert.
Menü Extras → Optionen → Debugging → "Den gesamten Text des Ausgabefensters in das Direktfenster umleiten" Die Option ist nicht aktiviert .
Konfiguration: Aktiv (Debug)
Hinweis: Wenn relevant, habe ich mit dem Assistenten ein Projekt als "Windows Forms-Anwendung" erstellt. Ich habe keine Ahnung, wo ich suchen soll.
Fügen Sie den System.Diagnostics
-Namensraum hinzu, und Sie können dann Debug.WriteLine()
verwenden, um schnell eine Nachricht in das Ausgabefenster der IDE zu drucken. Weitere Einzelheiten entnehmen Sie bitte diesen:
Dies schreibt in das Debug-Ausgabefenster:
using System.Diagnostics;
Debug.WriteLine("Send to debug output.");
Verwenden:
System.Diagnostics.Debug.WriteLine("your message here");
Debug.WriteLine
ist was Sie suchen.
Wenn nicht, versuchen Sie Folgendes:
Menü Extras → Optionen → Debugging → Deaktivieren Sie Ausgabe an Sofort senden.
Bei mir hat nur der Trace Namespace und nicht der Debug funktioniert:
System.Diagnostics.Trace.WriteLine("message");
Ich arbeite in einem C # -Projekt unter Visual Studio 2010.
Möglicherweise suchen Sie nach
MessageBox.Show()
oder
Debug.Writeline()
Der Anruf
System.Diagnostics.Debug.WriteLine("message");
schlägt fehl, wenn mit . NET Core (V 1.0 oder 1.1) gearbeitet wird.
Wir sollen einen Logger aus Microsoft.Extensions.Logging
erstellen und verwenden, aber dieser Log wird nur im Popup-Konsolenfenster von dotnet.exe angezeigt, nicht im Ausgabefenster von Visual Studio.
Dies erfordert ein Framework von Drittanbietern, nämlich Serilog , aber ich habe trotzdem festgestellt, dass es eine sehr reibungslose Erfahrung ist, die Ausgabe an einen Ort zu bringen, den ich kann seht es euch an.
Sie müssen zuerst Serilog's Trace sink installieren. Nach der Installation müssen Sie den Logger folgendermaßen einrichten:
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.CreateLogger();
(Sie können eine andere Mindeststufe oder einen Konfigurationswert oder eine der normalen Serilog-Funktionen festlegen. Sie können auch den Trace
-Logger auf eine bestimmte Stufe einstellen, um Konfigurationen zu überschreiben, oder Sie möchten dies tun. )
Dann loggen Sie die Nachrichten einfach normal und sie werden in Ihrem Ausgabefenster angezeigt:
Logger.Information("Did stuff!");
Dies scheint keine große Sache zu sein. Lassen Sie mich einige zusätzliche Vorteile erläutern. Das Größte für mich war, dass ich gleichzeitig sowohl im Ausgabefenster als auch in der Konsole protokollieren konnte :
Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Trace()
.WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
.CreateLogger();
Dies gab mir große Flexibilität in Bezug auf die Art und Weise, wie ich die Ausgabe konsumierte, ohne alle meine Aufrufe von Console.Write
mit Debug.Write
duplizieren zu müssen. Beim Schreiben des Codes konnte ich mein Befehlszeilentool in Visual Studio ausführen, ohne befürchten zu müssen, dass meine Ausgabe beim Beenden verloren geht. Als ich es bereitgestellt hatte und etwas debuggen musste (und kein Visual Studio zur Verfügung hatte), war die Konsolenausgabe für meinen Verbrauch leicht verfügbar. Dieselben Nachrichten können auch in einer Datei (oder einer anderen Art von Senke) protokolliert werden, wenn sie als geplante Aufgabe ausgeführt werden.
Das Fazit ist, dass es mit Serilog wirklich einfach war, Nachrichten an eine Vielzahl von Zielen zu senden. So konnte ich immer auf die Ausgabe zugreifen, unabhängig davon, wie ich sie ausgeführt habe.
Es erfordert auch sehr wenig Setup und Code.
Folgendes hat in Visual Studio 2015 für mich funktioniert:
OutputDebugStringW(L"Write this to Output window in VS14.");
Lesen Sie die Dokumentation zu OutputDebugStringW hier .
Beachten Sie, dass diese Methode nur funktioniert, wenn Sie Ihren Code debuggen (
debug mode
)
Dies ist keine Antwort auf die ursprüngliche Frage. Da ich diese Frage jedoch bei der Suche nach einer Möglichkeit gefunden habe, Objektdaten interaktiv abzulegen, stellte ich fest, dass andere von der Erwähnung dieser sehr nützlichen Alternative profitieren könnten.
Letztendlich habe ich das Befehlsfenster verwendet und den Befehl Debug.Print
eingegeben, wie unten gezeigt. Dies druckte ein Speicherobjekt in einem Format, das als Text kopiert werden kann, was alles ist, was ich wirklich brauchte.
> Debug.Print <item>
id: 1
idt: null
igad: 99
igbd: 99
gl_desc: "New #20"
te_num: "1-001-001-020"
In das Ausgabefenster von Visual Studio drucken:
Debug.Writeline();