[c#] Schreiben in das Ausgabefenster von Visual Studio?


Answers

Dies wird in das Debug-Ausgabefenster schreiben:

using System.Diagnostics;

Debug.WriteLine("Send to debug output.");
Question

Ich versuche, eine Nachricht in das Ausgabefenster zu Debugging-Zwecken zu schreiben. Ich suchte nach einer Funktion wie Java system.out.println("") . Ich habe versucht, Debug.Write , Console.Write und Trace.Write . Es gibt keinen Fehler, aber es wird auch nichts gedruckt.

Die Optionen "DEBUG-Konstante definieren" und "TRACE-Konstante definieren" werden geprüft.

Menü ExtrasOptionenDebuggerOption "Alle Ausgabefenstertext in das Direktfenster umleiten" ist nicht aktiviert.

Konfiguration: Aktiv (Debug)

Hinweis: Ich habe ein Projekt mit dem Assistenten als "Windows Forms Application" erstellt, falls relevant. Ich habe keine Ahnung, wo ich hinschauen soll.




In das Ausgabefenster von Visual Studio drucken:

Debug.Writeline();



    Debug.WriteLine

ist was du suchst.

Wenn nicht, versuchen Sie Folgendes:

Menü Extras → OptionenDebuggen → deaktivieren Sie Ausgabe sofort senden .




Dies erfordert ein Framework von Drittanbietern, nämlich Serilog , aber ich habe dennoch festgestellt, dass es eine sehr glatte Erfahrung ist, die Ausgabe an einen Ort zu bringen, den ich sehen kann.

Sie müssen zuerst die Trace-Senke von Serilog installieren. Nach der Installation müssen Sie den Logger wie folgt einrichten:

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .CreateLogger();

(Sie können eine andere Mindeststufe festlegen oder sie auf einen Konfig-Wert oder eine der normalen Serilog-Funktionen setzen. Sie können die Trace Protokollierung auch auf eine bestimmte Ebene setzen, um Konfigurationen zu überschreiben oder wie Sie dies auch tun möchten.)

Dann protokollieren Sie Nachrichten einfach normal und sie werden in Ihrem Ausgabefenster angezeigt:

Logger.Information("Did stuff!");

Das scheint keine so große Sache zu sein, also lassen Sie mich einige zusätzliche Vorteile erklären. Das größte für mich war, dass ich mich gleichzeitig sowohl im Ausgabefenster als auch in der Konsole anmelden konnte:

Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Trace()
    .WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error)
    .CreateLogger();

Dies gab mir eine große Flexibilität in Bezug darauf, wie ich die Ausgabe konsumierte, ohne alle meine Aufrufe an Console.Write mit Debug.Write duplizieren zu Debug.Write . Beim Schreiben des Codes konnte ich mein Befehlszeilentool in Visual Studio ausführen, ohne Angst davor zu haben, meine Ausgabe beim Beenden zu verlieren. Als ich es bereitgestellt hatte und etwas debuggen musste (und Visual Studio nicht verfügbar war), war die Konsolenausgabe für meinen Verbrauch 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 wird.

Das Entscheidende ist, dass es mit Serilog sehr einfach war, Nachrichten an eine Vielzahl von Zielen zu senden, um sicherzustellen, dass ich jederzeit auf die Ausgabe zugreifen konnte, unabhängig davon, wie ich sie ausführte.

Es erfordert auch sehr wenig Setup und Code.




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




Related