2009-05-26 18 views
0

Ich habe gerade ein Projekt zerlegt, um es unter Verwendung Reflector zu debuggen, aber es scheint, bei der Entschlüsselung der 'Kompilierresultate' der automatischen Eigenschaften, z. Die nächste Zeile gibt mir einen Syntaxfehler. Ich habe versucht, diese manuell zu beheben, aber jedes Mal, wenn ich einen repariere, erscheinen mehr.Problem mit Reflektor und automatische Eigenschaften

private string <GLDescription>k__BackingField; 

Gibt es etwas, was ich dagegen tun kann?

Antwort

2

Ha! Stupid me: Ich musste lediglich die Disassembler-Optimierung in Reflectors Optionen auf .NET 3.5 setzen. Meine war auf 2.0.

2

Der Compiler erzeugt Felder mit "unaussprechlichen Namen" - d. H. Solche, die in C# selbst illegal sind, aber gültige IL sind.

Es gibt keine genau genaue Übersetzung der IL in "normale" C# (ohne automatische Eigenschaften). Sie können < und > durch _ ersetzen, die gesetzlichen Code geben, aber dann wird es natürlich nicht genau der gleiche Code mehr sein. Wenn Sie nur nach dem Debuggen suchen, ist das kein Problem.

Wenn Sie decompile Iteratoren (dh Methoden yield Aussagen) Sie mehr von den gleichen, einschließlich der Verwendung von fault Blöcken finden, die wie finally Blöcke sind, aber sie nur ausgeführt werden, wenn eine Ausnahme aufgetreten ist (aber ohne den Fang Ausnahme). Verschiedene andere Konstrukte erzeugen unsägliche Namen, einschließlich anonymer Methoden, Lambda-Ausdrücke und anonymer Typen.

Auf eine breitere Notiz, haben Sie die Berechtigung, diesen Code zu dekompilieren? Wenn es Ihnen der Autor nicht übel nimmt, sind sie wahrscheinlich bereit, Ihnen den Quellcode zu geben, mit dem Sie Ihr Leben erleichtern könnten. Wenn sie nicht möchten, dass Sie ihren Quellcode debuggen, um damit zu beginnen, sollten Sie die ethischen (und möglicherweise rechtlichen) Konsequenzen des Dekompilierens des Codes berücksichtigen. Dies kann je nach Standort variieren: konsultieren Sie einen echten Anwalt für eine genauere Anleitung.

EDIT: Nachdem Sie Ihre eigene Antwort gesehen haben, macht das viel Sinn. Ich lasse das hier für Hintergrundmaterial.

+0

Also es ist im Grunde Goodbye Yellow-Brick zum Dekompilieren :-(Ich habe es gerade wieder mit 3.5 Optimierung ausgeführt, und es entschlüsselt tatsächlich Auto-Eigenschaften, aber alles andere ist eine wirklich hässliche Unordnung. – ProfK

+0

Yellow-Brick Road, das ist. – ProfK

+0

Richtig, es wird immer einige Dinge geben, die Reflector nicht genau wieder zusammensetzen kann.Es ist großartig, um zu sehen, was etwas tut, aber nicht um kompilierbaren Quellcode in jeder Situation zu erstellen.Man kann natürlich Dinge manuell reparieren Fälle, aber ich würde versuchen, es zu vermeiden, um ehrlich zu sein. –