2010-06-10 16 views

risposta

76

Console.WriteLine scrive nel flusso di output standard, sia in debug che in release. Debug.WriteLine scrive nei listener di traccia nella raccolta Listeners, ma solo quando è in esecuzione in debug. Quando l'applicazione è compilata nella configurazione di rilascio, gli elementi di Debug non verranno compilati nel codice.

Come Debug.WriteLine scrive a tutti gli ascoltatori di traccia della collezione Listeners, è possibile che questo potrebbe essere uscita in più di un luogo (finestra di output di Visual Studio, Console, File di log, applicazioni di terze parti che registra un ascoltatore (Credo che DebugView faccia questo), ecc.).

+7

Strictly DebugView monitora i messaggi registrati tramite la chiamata API di Windows nativa 'OutputDebugString' (e' DebugPrint'). Il 'DefaultTraceListener' scrive su' OutputDebugString', che è il motivo per cui DebugView vede l'output. http://msdn.microsoft.com/en-us/library/system.diagnostics.defaulttracelistener.aspx – MarkJ

27

Console.WriteLine() è destinato ai programmi in modalità console. Una buona funzionalità del processo di hosting di Visual Studio rende il suo output visualizzato nella finestra di output di Visual Studio mentre esegue il debug per i processi che non dispongono di una console. È molto utile durante il debug ma fai attenzione che dovresti rimuovere questo codice (o avvolgerlo con uno #ifdef DEBUG) quando sei pronto per creare la build di Release. Aggiungerà altrimenti inutili spese generali al tuo programma. Questo lo rende meno che ideale per il tracciamento del debug.

Debug.WriteLine() genera informazioni di traccia se si crea con il valore condizionale # DEBUG # definito. Che è attivo per impostazione predefinita nel build Debug. Dove finisce l'uscita può essere configurato nel file app.exe.config. Se questa configurazione non viene sovrascritta, .NET fornisce automaticamente un'istanza della classe DefaultTraceListener. Invia il testo Debug.WriteLine() con la funzione API di Windows OutputDebugString() al debugger. Il debugger di Visual Studio lo fa apparire nella finestra Output, proprio come Console.WriteLine().

Un chiaro vantaggio di Debug.WriteLine() è che non genera un sovraccarico nella build di rilascio, le chiamate vengono effettivamente rimosse. Tuttavia, non supporta la formattazione composita, per questo è necessario lo String.Format(). Per la traccia di debug, la classe Debug dovrebbe essere la tua scelta.

14

Se lo scopo di utilizzare Console.WriteLine è esclusivamente per il debug, è meglio utilizzare Debug.WriteLine.

Se si desidera visualizzare un messaggio per l'utente, si utilizzerà Console.WriteLine.

Debug.WriteLine ha il solo scopo di eseguire il debug dell'applicazione. In la modalità di rilascio le tue istruzioni di debug saranno ignorate.

Un altro utilizzo di un'applicazione console è la verifica di assiemi privati. Piuttosto che l'approccio tradizionale di creare una sorta di interfaccia di test della GUI per testare la versione compilata della DLL, è possibile semplicemente ricostruire la DLL come applicazione di console e input/output da/alla console. Ho trovato questa tecnica per essere più veloce di passare il tempo a creare un cablaggio di test GUI.

+2

"Se vuoi mostrare un messaggio al tuo utente, dovresti usare console.writeline."Questo potrebbe confondere alcune persone perché mostrerà qualcosa all'utente se esegue in un'applicazione console. –

Problemi correlati