Decompiler sind oftmals die letzte Chance einen Fehler im Quelllcode einer Drittanbieter-Komponente ausfindig zu machen oder einen schnellen Blick unter die Haube zu werfen. Jahrelang gab es im .Net-Umfeld nur eine herausragende Komponente – Den Lutz Roeder .Net Reflector!
Da der .Net Reflector mittlerweile nicht mehr kostenlos verfügbar ist, kommt dieses kleine, aber überaus mächtige Tool leider für viele Entwickler nicht mehr in Frage. Auch ich habe mich auf die Suche nach eine adäquaten Alternative gemacht und bin auf ein Tool gestoßen, das meine Erwartungen gänzlich erfüllt. Das besagte Tool heißt “dotPeek” und wurde von der Firma JetBrains entwickelt. dotPeek ist frei verfügbar und kann unter http://www.jetbrains.com/decompiler/ heruntergeladen werden.
Ich möchte nachfolgend die wichtigsten Funktionen dieser Applikation näher erläutern.
Dekompilierung und Bereitstellung von Assembly-Informationen
Analog zum .Net Reflector können auch in dotPeek Assemblies geladen und durchforstet werden. Der Aufbau ist hierbei an den des .Net Reflectors angelehnt. Im linken Bereich befindet sich eine Navigationsstruktur, mit der durch die geladenen Assemblies und deren Inhalte navigiert werden kann. Im rechten Bereich der Applikation werden Details und der dekompilierte Quelltext der C#-Konstrukte dargestellt.
Suche
Oftmals kennt ein Entwickler nur den Namen einer Klasse und möchte diese über die Suchfunktionalität finden. Diese Funktionalität ist über das Hauptmenü erreichbar.
dotPeek findet die gesuchte Klasse in allen geladenen Assemblies; aber auch in nicht geladenen .Net –Bibliotheken (DLLs) aus dem Global Assembly Cache (GAC).
Inhaltgesteuerte Navigation
Ähnlich wie in Visual Studio kann im Quelltext zur Implementierung oder zur Deklaration eines C#-Konstruktes navigiert werden. Diese Funktionalitäten werden dem Anwender über ein Kontext-Menü bereitgestellt.
oder
Zudem wird das Suchen anhand der Verwendung bzw. der Vererbung unterstützt. Über das Kontextmenü wird die Verwendung eines Konstrukts ausfindig gemacht und in Form eines Auswahldialoges dem Anwender präsentiert.
Die Ergebnisse der Verwendungs-Suche werden in einem separaten Fenster angezeigt, wenn man die Funktionalität über das Hauptmenü startet. Via Kontextmenü öffnet sich das besagte Auswahldialogfenster.
Assembly-Suche
Es besteht in dotPeek zudem die Möglichkeit, eine Assembly anhand des Namens zu suchen. Dazu gibt der Anwender den Assembly-Dateinamen oder einen Teil davon ein und erhält umgehend (auto suggest) eine Ergebnisliste.
Alles in allem macht dotPeek einen sehr stabilen und performanten Eindruck und steht dem .Net Reflector in nichts nach. Ich bin mit dem Tool absolut zufrieden und trauere dem .Net-Reflector mittlerweile nicht mehr nach.