Est-il possible de savoir si un assembly a été compilé avec l'indicateur TRACE ou DEBUG défini sans modifier l'assembly?Comment savoir si un assembly .NET a été compilé avec l'indicateur TRACE ou DEBUG
Répondre
static bool IsDebug(){
bool rv = false;
#if DEBUG
rv = true;
#endif
return rv;
}
Eh bien merci, mais je cherche r un moyen de savoir sans modifier l'assemblage. Je veux installer un assemblage déjà compilé de préférence avec un outil de ligne de commande. – Ralf
Il n'existe probablement aucun moyen générique. Toutefois, vous pouvez rechercher des références à Assert
et Debug
à partir de l'espace de noms System.Diagnostics
. La présence de ceux-ci indiquera que le drapeau DEBUG a été défini.
La même chose vaut pour Trace
et le drapeau TRACE.
Évidemment, cela ne fonctionnera pas si le code source n'utilise pas les types de ces espaces de noms.
Lien direct vers un outil IsDebug, avec instructions d'utilisation.
La seule meilleure façon de faire est de vérifier les assemblys compilés eux-mêmes. Il y a cet outil très utile appelé '.NET Assembly Information' trouvé here par Rotem Bloom. Après avoir installé cela, il associe les fichiers .dll à ouvrir avec lui-même. Après l'installation, vous pouvez simplement double-cliquer sur l'assemblage pour l'ouvrir et il vous donnera les détails d'assemblage tels qu'ils sont affichés dans le screenshop ci-dessous. Là, vous pouvez identifier si c'est débogué compilé ou non.
alt text http://ruchitsurati.net/myfiles/asm_info.jpg
alt text http://ruchitsurati.net/myfiles/release_assembly.PNG
L'application "de IsDebug" mentionné ci-dessus, a fait un bogue où il ne reflète pas les DubuggableAttributes correctes. Il suppose à tort que si l'attribut DebuggableAttribute est présent, l'assembly n'est pas optimisé JIT. J'ai fourni une bonne mise en œuvre sur mon blog à l'adresse:
Avec ou sans ajout de code à l'assemblée? – StingyJack
des questions de Stackoverflow, dans des similaires une question, et beaucoup, beaucoup de réponses différentes: http://stackoverflow.com/questions/654450/programatically-detecting-release-debug-mode-net http: // stackoverflow. com/questions/798971/comment-idenfiy-si-le-dll-est-debug-ou-version-build-in-net http://stackoverflow.com/questions/194616/how-to-tell -if-net-app-a été compilé-en-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