it-swarm.com.de

In das Ausgabefenster von Visual Studio schreiben

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ü ExtrasOptionenDebugging"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.

551

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:

690
Bhargav Bhat

Dies schreibt in das Debug-Ausgabefenster:

using System.Diagnostics;

Debug.WriteLine("Send to debug output.");
146
veight

Verwenden:

System.Diagnostics.Debug.WriteLine("your message here");
79
Luqman
Debug.WriteLine

ist was Sie suchen.

Wenn nicht, versuchen Sie Folgendes:

Menü ExtrasOptionenDebugging → Deaktivieren Sie Ausgabe an Sofort senden.

53

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.

21
Zac

Möglicherweise suchen Sie nach

MessageBox.Show()

oder

Debug.Writeline()
16
dansasu11

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.

8
Paul Gorbas

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.

4
jpmc26

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 .

enter image description here Beachten Sie, dass diese Methode nur funktioniert, wenn Sie Ihren Code debuggen (debug mode)

1
Mona Jalal

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"
1
djabraham

In das Ausgabefenster von Visual Studio drucken:

Debug.Writeline();
0
Amir Twito