[C#] Scrivere nella finestra di output di Visual Studio?


Answers

Questo scriverà nella finestra di output di debug:

using System.Diagnostics;

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

Sto cercando di scrivere un messaggio nella finestra di output per scopi di debug. Ho cercato una funzione come system.out.println("") Java. Ho provato Debug.Write , Console.Write e Trace.Write . Non dà un errore, ma non stampa nulla neanche.

Le opzioni "Definisci costante DEBUG" e "Definisci costante TRACE" sono selezionate.

Menu StrumentiOpzioniDebug → L'opzione "Reindirizza tutto il testo della finestra di output nella finestra immediata" non è selezionata.

Configurazione: attiva (debug)

Nota: ho creato un progetto con la procedura guidata come "Applicazione Windows Form", se pertinente. Non ho idea di dove guardare.




Stampa nella finestra di output di Visual Studio:

Debug.Writeline();



    Debug.WriteLine

è quello che stai cercando.

In caso contrario, prova a fare questo:

Menu StrumentiOpzioniDebug → deselezionare Invia output a immediato .




Per me, solo lo spazio dei nomi Trace e non quello Debug ha funzionato:

System.Diagnostics.Trace.WriteLine("message");

Sto lavorando a un progetto C # in Visual Studio 2010.




Ciò richiede un framework di terze parti, vale a dire Serilog , ma ho comunque trovato che sia un'esperienza molto fluida con l'uscita in qualche luogo che posso vedere.

Per prima cosa è necessario installare il lavandino Trace di Serilog. Una volta installato, è necessario configurare il logger in questo modo:

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

(Puoi impostare un livello minimo diverso o impostarlo su un valore di configurazione o su una qualsiasi delle normali funzionalità di Serilog. Puoi anche impostare il logger di Trace su un livello specifico per sovrascrivere le configurazioni, o comunque vuoi farlo.)

Quindi ti basta registrare i messaggi normalmente e vengono visualizzati nella finestra di output:

Logger.Information("Did stuff!");

Questo non sembra un grosso problema, quindi lasciatemi spiegare alcuni ulteriori vantaggi. Il più grande per me era che potevo accedere contemporaneamente alla finestra Output e alla console :

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

Questo mi ha dato una grande flessibilità in termini di come ho consumato l'output, senza dover duplicare tutte le mie chiamate su Console.Write con Debug.Write . Quando scrivevo il codice, potevo eseguire il mio strumento da riga di comando in Visual Studio senza paura di perdere il mio output quando usciva. Quando l'ho distribuito e avevo bisogno di eseguire il debug di qualcosa (e non avevo a disposizione Visual Studio), l'output della console era prontamente disponibile per il mio consumo. Gli stessi messaggi possono anche essere registrati su un file (o qualsiasi altro tipo di sink) quando è in esecuzione come operazione pianificata.

La linea di fondo è che l'uso di Serilog per fare questo ha reso davvero facile scaricare i messaggi su una moltitudine di destinazioni, garantendo che potessi sempre accedere facilmente all'output indipendentemente da come l'ho eseguito.

Richiede anche un set up e un codice minimi.