2009-03-10 13 views
8

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

+0

Con o senza l'aggiunta di codice al montaggio? – StingyJack

+0

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

risposta

2
static bool IsDebug(){ 
bool rv = false; 
#if DEBUG 
rv = true; 
#endif 
return rv; 
} 
+0

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

1

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.

3

Collegamento diretto a uno strumento IsDebug, insieme alle istruzioni per l'uso.

5

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

LinkText: http://www.codeplex.com/AssemblyInformation

0

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:

How to Tell if an Assembly is Debug or Release

Problemi correlati