C'è un modo per scoprire se un assembly è stato compilato con il flag TRACE o DEBUG impostato senza modificare l'assembly?Come scoprire se un assembly .NET è stato compilato con il flag TRACE o DEBUG
risposta
static bool IsDebug(){
bool rv = false;
#if DEBUG
rv = true;
#endif
return rv;
}
Bene, grazie, ma sto cercando un modo per scoprirlo senza modificare l'assemblaggio. Voglio istpect un assembly già compilato preferibilmente con alcuni strumenti da riga di comando. – Ralf
Probabilmente non esiste un modo generico. Tuttavia, è possibile cercare i riferimenti a Assert
e Debug
dallo spazio dei nomi System.Diagnostics
. La presenza di quelli indicherà che il flag DEBUG è stato impostato.
Lo stesso vale per Trace
e il flag TRACE.
Ovviamente questo non funzionerà se il codice sorgente non utilizza tipi da questi spazi dei nomi.
Collegamento diretto a uno strumento IsDebug, insieme alle istruzioni per l'uso.
L'unico modo migliore è controllare gli assembly compilati. C'è questo strumento molto utile chiamato "Informazioni di assemblaggio .NET" trovato here da Rotem Bloom. Dopo averlo installato, asociates .dll file da aprire con se stesso. Dopo l'installazione, è sufficiente fare doppio clic sull'assieme per aprirlo e visualizzare i dettagli dell'assieme come visualizzato nello screenshot sottostante. Qui puoi identificare se si tratta del debug compilato o meno.
alt text http://ruchitsurati.net/myfiles/asm_info.jpg
alt text http://ruchitsurati.net/myfiles/release_assembly.PNG
Il "IsDebug" app di cui sopra, ha in realtà un bug in esso dove non riflette sulle DubuggableAttributes corrette. Presuppone erroneamente che se è presente il DebuggableAttribute, l'assembly non è JIT ottimizzato. Ho fornito una corretta applicazione sul mio blog all'indirizzo:
Con o senza l'aggiunta di codice al montaggio? – StingyJack
similar a domande in StackOverflow, una domanda, e molte, molte risposte diverse: http://stackoverflow.com/questions/654450/programatically-detecting-release-debug-mode-net http: // StackOverflow. it/questions/798971/how-to-idenfiy-if-the-dll-is-debug-or-release-build-in-net http://stackoverflow.com/questions/194616/how-to-tell -if-net-app-was-compiled-in-debug-or-release-mode http://stackoverflow.com/questions/50900/best-way-to-detect-a-release-build-from- a-debug-build-net http://stackoverflow.com/questions/890459/asp-net-release-build-vs-debug-build – Kiquenet