So ermitteln Sie, ob eine .NET-Assembly mit dem TRACE- oder DEBUG-Flag kompiliert wurde

8

Gibt es eine Möglichkeit, herauszufinden, ob eine Assembly mit dem Flag TRACE oder DEBUG kompiliert wurde, ohne die Assembly zu ändern?

    
Ralf 10.03.2009, 11:01
quelle

6 Antworten

5

Der einzige beste Weg ist, die kompilierten Assemblies selbst zu überprüfen. Es gibt dieses sehr nützliche Tool namens ".NET Assembly Information", das hier von Rotem Bloom gefunden wurde. 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 debuggen ist kompiliert oder nicht.

Alttext http://ruchitsuatrati.net/myfiles/asm_info.jpg

alt text http://ruchitsu rati.net/myfiles/release_assembly.PNG

LinkText: Ссылка

    
this. __curious_geek 28.04.2009 17:19
quelle
3

Direkter Link zu einem IsDebug Tool, zusammen mit den Nutzungshinweisen.

    
Graeme Bradbury 10.03.2009 11:52
quelle
2
%Vor%     
nothrow 10.03.2009 11:09
quelle
1

Es gibt wahrscheinlich keinen generischen Weg. 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 keine Typen aus diesen Namespaces verwendet.

    
Dirk Vollmar 10.03.2009 11:19
quelle
0

Die oben erwähnte "IsDebug" -App hat tatsächlich einen Fehler darin, wo sie nicht über die korrekten DubuggableAttributes reflektiert. Es nimmt fälschlicherweise an, dass die Assembly, wenn das DebuggableAttribute vorhanden ist, nicht JIT Optimized ist. Ich habe eine korrekte Implementierung in meinem Blog zur Verfügung gestellt:

Wie kann ich sagen, ob? Eine Assembly ist Debug oder Release

    
Dave Black 08.12.2011 18:39
quelle