Posso utilizzare Trace.WriteLine in modalità di rilascio?Trace.WriteLine in modalità di rilascio?
E qual è la differenza principale tra Trace.Write e Debug.Write?
Posso utilizzare Trace.WriteLine in modalità di rilascio?Trace.WriteLine in modalità di rilascio?
E qual è la differenza principale tra Trace.Write e Debug.Write?
Entrambi vengono compilati condizionatamente utilizzando l'attributo [Conditional]
.
Se il flag TRACE
viene definito nel build, le chiamate alla classe Trace
provocheranno la scrittura dell'output di traccia. Per impostazione predefinita, TRACE
è definito sia in modalità di debug che di rilascio. Se la bandiera non è definita, non succederà nulla.
Se il flag DEBUG
è definito, chiama al risultato di classe Debug
in output scritto nel flusso di debug. Per impostazione predefinita, DEBUG
è definito solo in modalità di debug.
L'altra grande differenza è che con la traccia è facile personalizzare lo trace listeners e decidere in seguito cosa si vuole fare con l'output di traccia. È più flessibile dell'output di debug e generalmente è più adatto per l'accesso a un'applicazione di produzione.
La differenza è in modalità di rilascio.
Debug.Write non verrà compilato nel codice quando il simbolo DEBUG non è definito, ovvero la compilazione in modalità di rilascio.
Tuttavia, Trace.Write verrà compilato sia in modalità di debug che in modalità di rilascio.
Quindi, se il flag di traccia è definito per difetto, c'è un modo disinserirlo nelle modalità di rilascio o di debug? – Carlo
@Carlo: Certo, è nelle proprietà del progetto, scheda Costruisci. Ci sono due checkbox, uno che dice "Definisci costante DEBUG" e un altro che dice "Definisci costante TRACE". Questi corrispondono a come si comportano le classi 'Debug' e' Trace' e i corrispondenti metodi 'Write'. – Aaronaught
Ottimo! Grazie, ottima risposta! – Carlo