Gibt es eine Möglichkeit herauszufinden, ob eine Assembly mit dem gesetzten TRACE- oder DEBUG-Flag kompiliert wurde, ohne die Assembly zu modifizieren?Wie findet man heraus, ob eine .NET-Assembly mit dem TRACE- oder DEBUG-Flag kompiliert wurde?
Antwort
static bool IsDebug(){
bool rv = false;
#if DEBUG
rv = true;
#endif
return rv;
}
Gut danke, aber ich suche fo Ein Weg, um herauszufinden, ohne die Montage zu ändern. Ich möchte eine bereits kompilierte Assembly vorziehen, vorzugsweise mit einem Kommandozeilenwerkzeug. – Ralf
Es gibt wahrscheinlich keine generische Methode. Sie können jedoch nach Referenzen auf Assert
und Debug
aus dem Namespace System.Diagnostics
suchen. Die Anwesenheit von diesen zeigt an, dass das DEBUG-Flag gesetzt wurde. Dasselbe gilt für Trace
und das TRACE-Flag.
Offensichtlich funktioniert das nicht, wenn der Quellcode Typen aus diesen Namespaces nicht verwendet.
How to Programmatically Detect if an Assembly is Compiled in Debug or Release mode von Scott Hanselman.
Direkte Verbindung zu einem IsDebug Tool, zusammen mit Gebrauchsanweisungen.
Der einzige beste Weg ist, die kompilierten Baugruppen selbst zu überprüfen. Es gibt dieses sehr nützliche Tool mit der Bezeichnung '.NET Assembly Information' von Rotem Bloom, here. Nachdem Sie dies installiert haben, werden die zugehörigen .dll-Dateien mit geöffnet. Nach der Installation können Sie einfach auf das Assembly doppelklicken, um es zu öffnen, und es werden Ihnen die Assemblierungsdetails angezeigt, wie sie im ScreenShop unten angezeigt werden. Dort können Sie erkennen, ob es Debug kompiliert oder nicht ist.
alt text http://ruchitsurati.net/myfiles/asm_info.jpg
alt text http://ruchitsurati.net/myfiles/release_assembly.PNG
Die "IsDebug" app oben erwähnt, tatsächlich einen Fehler in ihm hat, wo es nicht auf den richtigen DubuggableAttributes widerspiegelt. Es nimmt fälschlicherweise an, dass die Assembly, wenn das DebuggableAttribute vorhanden ist, nicht JIT Optimized ist.
Mit oder ohne Hinzufügen von Code zu der Versammlung: Ich habe auf eine korrekte Umsetzung auf meinem Blog zur Verfügung gestellt? – StingyJack
similars Fragen in Stackoverflow, eine Frage und viele, viele verschiedene Antworten: http://stackoverflow.com/questions/654450/programatically-detecting-release-debug-mode-net http: // Stackoverflow. com/questions/798971/how-to-identify-wenn-die-DLL-ist-Debug-oder-release-Build-in-net http://StackOverflow.com/Questions/194616/How-to-Tell -if-net-app-was-kompiliert-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