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:
- 1. Comment savoir si une application .NET a été compilée en mode DEBUG ou RELEASE?
- 2. Comment vérifier si DLL est compilé debug-
- 3. Comment savoir si un assembly .NET est dynamique?
- 4. Comment puis-je savoir quand .Net System.Diagnostics.Process a été exécuté avec succès ou a échoué?
- 5. Comment savoir quel compilateur a été utilisé: g77 ou gfortran
- 6. Comment savoir si un formulaire a été modifié
- 7. Comment puis-je savoir si un exécutable a été lié de manière incrémentielle ou non?
- 8. Déterminez si le fichier .class a été compilé avec les informations de débogage?
- 9. Comment puis-je savoir si un fichier a été modifié via .NET?
- 10. VCRedist - comment puis-je savoir si elle a été exécutée?
- 11. Comment savoir ce qui a été cliqué?
- 12. Modification de la version d'assembly dans un assembly .NET compilé
- 13. Y a-t-il un moyen de savoir si un email a été ouvert?
- 14. Réplication de fusion SQL: comment savoir si un enregistrement a été répliqué?
- 15. Comment savoir dans .NET si vous utilisez x86 ou x64?
- 16. Besoin de savoir si un widget jQuery UI a été appliqué à un objet DOM
- 17. Comment puis-je savoir si "abort()" a été appelé sur un XMLHTTPRequest
- 18. Détecter si un formulaire a été soumis avec PHP
- 19. Comment importer un assembly net
- 20. Comment savoir quelle touche SHIFT a été enfoncée?
- 21. Comment savoir si l'événement $ (window) .load()/window.onload a déjà été déclenché?
- 22. MessageWindow - Comment puis-je savoir s'il a été détruit?
- 23. Comment une vue sous-jacente peut-elle savoir si son rectangle a été touché, que ce soit directement ou indirectement?
- 24. Déterminer si un paramètre nommé a été passé
- 25. Comment savoir quelle fonction de hachage a été utilisée?
- 26. Déterminer si un message sur tcp a été livré
- 27. Comment savoir si .NET 3.5 SP1 est installé?
- 28. Comment savoir si un fichier existe en C#/.NET?
- 29. Comment déterminer si un paramètre a été "posté" ou "récupéré" à partir de Java?
- 30. Déterminez si une connexion a été rompue
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