Mittlerweile hat es sich ja schon rumgesprochen, dass der allseits bekannte .NET Reflector von Red Gate nicht mehr kostenlos ist und man die Trial Version nur eine begrenzte Zeit verwenden kann. Doch wie es eben so ist, sind innerhalb kurzer Zeit einige Alternativen aus dem Boden geschossen bzw. wachsen gerade lustig vor sich hin. Eigentlich hab ich bisher nur selten einen Reflector benötigt, aber da ich mich zur Zeit in Aspect Orientierter Programmierung mit PostSharp einarbeite (übrigens ein sehr zu empfehlendes Thema), kommt man manchmal einfach nicht drum rum, sich mal anzuschauen, was der Compiler aus dem schön leserlichen Quellcode so macht.

So. Also für einen Hobby-Gebrauch sind 25€ bzw. 50€ (für die Visual Studio Integration) einfach nicht drin. Rein schon aus Protest, weil es sich um ein Tool handelt, das schon seit Jahren nichts gekostet hat. Also was gibt es sonst noch? Ich hab mir jetzt mal drei Alternativen angesehen. Zum einen ILSpy, der zu SharpDevelop dazu gehört, aber auch Standalone verwendbar ist. Dann noch zwei Beta-Versionen, einmal von Telerik (JustDecompile) und von JetBrains (DotPeek). Alle drei haben ein paar Sachen gemeinsam. Erstens sind sie vom Aufbau ziemlich identisch und zweites sind sie noch recht jung auf dem Markt.

ILSpy

Informationen und Downloads zu ILSpy findet man hier: http://wiki.sharpdevelop.net/ilspy.ashx

Das Tool macht einen sehr guten Eindruck und sowohl von der Oberfläche her als auch von der Bedienung kommt man sofort klar. Vielleicht dauert es ein bisschen lange zu starten, aber irgendwie haben das alle Reflector-Tools so an sich hab ich das Gefühl. Naja. Auf jeden Fall ist dieser Decompiler open source und kostenlos unter der MIT Lizenz verfügbar. Das heißt, man kann auch davon ausgehen, dass das so bleiben wird. Zum Code, den das Tool liefert, muss man eigentlich nicht viel sagen. Er wird ziemlich straight forward angezeigt und nicht besonders viel aufbereitet. Allerdings wird er in meinen Augen auch nicht unnötig verfälscht. Wenn man weiß, was man macht, würd ich sagen, dass die Ausgabe ohne weiteres als gut zu bezeichnen ist und man kann auf jeden Fall damit arbeiten. Schön finde ich vor allem, dass man mit dem implementierten CodeFolding doch erst einmal die Sachen, die man nicht braucht aufräumen kann.

JustDecode

Den findet man unter www.telerik.com, wobei man sich aber dafür anmelden muss, wenn man den Reflector downloaden will. Ich konnte JustDecompile ehrlich gesagt nicht wirklich testen, da er bei fast allen meinen Assemblies beim Öffnen bereits abgestürzt ist. Wenn er aber mal was angezeigt hat, war der Code sehr aufgeräumt und übersichtlich. Sogar mit den Aspekten aus PostSharp kann man den Code immer noch gut lesen. Die häufigen Abstürze schieb ich jetzt einfach mal darauf, dass sich einfach um eine frühe Beta-Version handelt. Ich denke schon, dass der sicher noch besser werden wird. Was mir zudem nicht gefallen hat ist, dass sich die Bedienung ein bisschen zäh anfühlt. Ein bisschen mehr Performance würde dem Tool auf jeden Fall nicht schaden.

DotPeek

DotPeek gibt es hier: http://www.jetbrains.com/decompiler

Der macht eigentlich den besten Eindruck. Es gibt zwar ein paar Haken auf die man aufpassen muss, aber wenn man das weiß, ist das Arbeiten damit wirklich kein Problem mehr. Zum einen sei gleich mal erwähnt, dass DotPeek den echten Quellcode anzeigt, wenn dieser gefunden wird. Ich weiß noch nicht, wie danach gesucht wird, auf jeden Fall hat er den Quellcode bei mir ständig gefunden. Erst wenn man über das Contextmenü “Decompiled Sources” auswählt, werden auch wirklich die Inhalte der Assembly angezeigt. Das Anzeigen geht sehr schnell und mit den verschiedenen Navigations-Funktionen, die das Tool gleich noch mit anbietet, kann man sich auch wirklich sehr schnell selbst in fremden Code zurecht finden.

Fazit

Was ich letztendlich jetzt verwenden werde, steht ehrlich gesagt noch nicht fest. Ich denke, dass ich wohl bei ILSpy bleiben werde, da hier die Gefahr am wenigsten besteht, dass man sich plötzlich wieder was Neues suchen muss. Außerdem hab ich eine recht gute Meinung von den Sachen, die aus der SharpDevelop-Ecke kommen. DotPeek macht ebenfalls einen sehr ausgereiften Eindruck, aber mit einem großen Hersteller dahinter kann es eben wieder passieren, dass die plötzlich die Entwicklung einstellen, weil es sich nicht lohnt oder plötzlich einen Obulus dafür haben wollen. Grundsätzlich hab ich ja nichts dagegen für gute Software zu zahlen. Umsonst will ich schließlich auch nicht arbeiten. Aber ein so plötzliches Umschwenken finde ich auch absolut nicht in Ordnung.