2010-02-19 18 views

risposta

15

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.

+0

Quindi, se il flag di traccia è definito per difetto, c'è un modo disinserirlo nelle modalità di rilascio o di debug? – Carlo

+1

@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

+0

Ottimo! Grazie, ottima risposta! – Carlo

2

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.

4

DEBUG: DEBUG settings

STAMPA: RELEASE settings

Come si vede la costante TRACE è attivato in entrambe le configurazioni di default

Problemi correlati