dotPeek kann jede .NET-Assembly in gleichwertigen C#-Code dekompilieren und optional den zugrunde liegenden IL-Code anzeigen.
dotPeek kann mit einer Vielzahl von Formaten arbeiten, zum Beispiel Bibliotheken (.dll), ausführbaren Dateien (.exe) und Metadaten (.winmd).
Durch die Dekompilierung von .baml-Dateien ermöglicht dotPeek auch die Rekonstruktion von UI-Definitionen im XAML-Format.
Neben den herkömmlichen Assemblies und ausführbaren Dateien öffnet dotPeek auch Archivdateien (.zip, .vsix oder .nupkg) und Ordner. Sie können in beliebigen Online-Paketquellen nach NuGet-Paketen suchen und diese (bei Bedarf samt Abhängigkeiten) von dort laden, und Sie können Pakete laden, die in einer packages.config-Datei in Ihrem Visual-Studio-Projekt aufgeführt sind.
Dekompilierter Code ist besser als nichts, aber manchmal können Assemblies auch ihrem Quellcode zugeordnet werden. Warum sollten Sie diese Möglichkeit nicht nutzen? dotPeek kann lokalen Quellcode anhand von PDB-Dateien identifizieren oder Quellcode von Source-Servern abrufen, zum Beispiel vom Microsoft Reference Source Center oder von SymbolSource.org. Darüber hinaus kann dotPeek auch PDB-Dateien generieren.
Im Navigationsmodus-Dropdown in der Menüleiste können Sie auswählen, ob dotPeek nur Assemblies dekompilieren oder auch nach Quellcode suchen soll.
Sie können sich bestimmte Compiler-Umwandlungen anzeigen lassen, damit die von dotPeek angezeigte Codestruktur dem vom Compiler erzeugten Code möglichst ähnlich ist. Dadurch lässt sich leichter erkennen, wie der Compiler mit bestimmten Konstrukten wie Lambdas, Closures und Auto-Eigenschaften umgeht.
Das Fenster Process Explorer zeigt alle aktuell ausgeführten Prozesse an, erlaubt das Durchsuchen von deren Modulen und das Dekompilieren von .NET-Assemblies. Sie können sich aussuchen, ob native Prozesse oder Module angezeigt oder versteckt werden sollen, und Sie können die Prozesshierarchie-Ansicht einschalten.
Filtern Sie die Liste, um ein Modul oder einen Prozess zu finden, und fügen Sie dann zur weiteren Untersuchung dessen Assemblies zum Assembly Explorer hinzu.
Sollte die Untersuchung des Quellcodes einmal nicht ausreichen, können Sie von einem beliebigen Punkt im dekompilierten C#-Code zum IL-Code navigieren.
Am einfachsten ist es, den IL-Code in einem separaten Toolfenster anzuzeigen, das mit dem Code-Hauptfenster synchronisiert ist.
dotPeek kann den IL-Code sowohl für dekompilierten Code als auch für aus Symboldateien reproduzierten Quellcode anzeigen.
Alternativ können Sie den IL-Code auch als Kommentare im dekompilierten C#-Code anzeigen lassen. Dadurch wird die Standard-Textansicht mit dem normalerweise separaten IL Viewer in einem einzigen Fenster kombiniert.
dotPeek unterstützt die gleichen Farbdesigns wie Visual Studio.
Sie können zum Beispiel das blaue oder das dunkle Design auswählen oder das Farbdesign mit den Visual-Studio-Einstellungen synchronisieren.
Da dotPeek die leistungsstarke Code-Insight-Architektur von ReSharper nutzt, können Sie mit oder ohne Berücksichtigung des Kontexts in dekompilierten Assemblies navigieren, eine Übersicht der Inhalte in den einzelnen dekompilierten Dateien erhalten, Lesezeichen setzen und Vererbungshierarchien untersuchen.
Mit dotPeek können Sie auf unterschiedliche Weise nach Verwendungen von Codesymbolen suchen.
Mit Find Usages finden Sie alle Verwendungen eines Symbols (Methode, Eigenschaft usw.) in allen geladenen Assemblies. Die Verwendungen werden im Toolfenster Find Results angezeigt. Dort können Sie sie gruppieren, zwischen ihnen navigieren und sie in der Codeansicht öffnen.
Find Usages Advanced ist eine detailliertere Version von Find Usages, die eine Eingrenzung der Suche ermöglicht, zum Beispiel durch Angabe des Suchbereichs und anderer Kriterien.
dotPeek hebt alle sichtbaren Verwendungen des Symbols, das sich unter dem Textcursor befindet, automatisch hervor – ähnlich wie die neueren Versionen von Visual Studio. Dies verbessert die Lesbarkeit des dekompilierten Codes, insbesondere wenn Sie es mit verschleierten Bezeichnern zu tun haben.
Zudem können Sie mit Highlight Usages in File alle Verwendungen in einer Datei durchgehen – auch solche, die aktuell nicht sichtbar sind. Dabei werden alle Verwendungen des jeweiligen Symbols in der aktuellen Datei in zwei Farben hervorgehoben, je nachdem, ob es sich um einen Lese- oder Schreibzugriff handelt.
Mit Go to File Member können Sie in einem Dokument, das einen dekompilierten Typ darstellt, eine schnelle Übersicht der Typmember erhalten und zu diesen navigieren. Durch Eingabe eines Teils des Membernamens können Sie direkt zum Member navigieren.
Wenn Sie lieber eine statische Auflistung der Member im aktuellen Dokument wünschen, öffnen Sie das Toolfenster File Structure und docken Sie es an. Diese Ansicht lässt sich auch filtern: Wählen Sie das Toolfenster aus, und geben Sie einfach Text ein, um nur die gewünschten Typmember anzuzeigen.
dotPeek indiziert alle Assemblies auf Ihrer Assembly-Liste sowie deren Referenzen und stellt zwei Funktionen zur Verfügung, um schnell zu einem bestimmten Codeelement zu springen:
Wenn Ihnen bestimmte Zeilen im dekompilierten Code besonders wichtig erscheinen, können Sie Lesezeichen setzen, um leicht zu diesen Stellen zurückzufinden.
Sie können mit einer Tastenkombination eine nummerierte Markierung hinterlegen und mit einer anderen Tastenkombination jederzeit dorthin zurückspringen. Sie können bis zu 10 nummerierte Bookmarks erstellen – und unbegrenzt viele ohne Nummerierung. Die vollständige Liste der mit Lesezeichen markierten Stellen wird in einem Popup-Fenster angezeigt.
Sobald Sie das Caretzeichen auf ein Symbol in der Codeansicht setzen, bietet dotPeek eine Vielzahl von kontextbezogenen Navigationsoptionen an, die alle über das Dropdown-Menü Navigate To zur Verfügung stehen.
Go to Declaration bringt Sie zum Beispiel von einer Verwendung eines beliebigen Symbols zu dessen Deklaration. Wenn das Symbol in einer anderen Assembly deklariert ist, wird die Assembly automatisch geladen.
Go to Implementation navigiert Sie direkt zu den Endimplementierungen von Typen und Typmembern. Zwischenschritte in der Vererbungskette wie etwa abstrakte Klassen werden dabei übersprungen.
Zu den weiteren nützlichen kontextbezogenen Navigationsoptionen zählen Go to Base Symbols und Go to Extension Methods.
Wenn Sie von einem bestimmten Typ oder Typmember aus nach oben und unten in der Vererbungshierarchie navigieren möchten, empfiehlt sich die Verwendung von Go to Base Symbols und Go to Derived Symbols.
Diese sind äußerst nützlich, wenn Sie direkt zu einem abgeleiteten Symbol oder einem Basissymbol navigieren möchten.
Um einen visuellen Überblick über eine Vererbungskette zu erhalten, verwenden Sie Type Hierarchy.
dotPeek zeigt Ihnen in einem separaten Toolfenster alle Typen, die sich in der Vererbungshierarchie oberhalb oder unterhalb des ausgewählten Typs befinden, als Baumstruktur an.
dotPeek bietet Tools, die Ihnen helfen, die Struktur einer Assembly schnell zu überblicken, die Zusammenhänge zwischen Assemblies zu verstehen und Assemblies in Listen zu organisieren. Dadurch können Sie sich auf die Assemblies konzentrieren, die für Ihre aktuelle Aufgabe relevant sind.
Je nach Kontext können Sie mit verschiedenen Assembly-Listen arbeiten. Sie können Assembly-Listen speichern und erneut öffnen und die aktuelle Liste löschen, wenn Sie sie nicht mehr benötigen. Assembly-Listen können neben .dll- und .exe-Dateien auch NuGet-Pakete, Archive und Ordner enthalten.
Bei der Arbeit mit einer Assembly-Liste können Sie im Assembly Explorer sehen, welche Referenzen, Ressourcen und Codeinhalte eine Assembly enthält – angefangen von Namensräumen bis hin zu Typmembern.
Zu jedem Typ werden neben der eigentlichen Memberliste auch Knoten mit den Basistypen und den abgeleiteten Typen hervorgehoben. Suchen und Filtern von Knoten mittels lowerCamelHump-Syntax – Eingabe von Teilen eines CamelCase-Namens in Kleinschreibung – ist ebenfalls möglich.
Mit dotPeek können Sie auch Assembly-Metadaten untersuchen und alle darin enthaltenen Elemente (Tabellen, Blobs, Zeichenfolgen usw.) einsehen. Unter dem Metadata-Knoten können Sie die Werte von Blob-Elementen, die PE-Dateiheader und die Verwendungen der Elemente in der Metadatentabelle überprüfen.
Wie auch in anderen Bereichen der Assembly-Baumstruktur können Sie auf Metadatenelemente doppelklicken, um den entsprechenden Code zu dekompilieren und anzuzeigen.
Wenn Sie die Abhängigkeiten zwischen verschiedenen Assemblies untersuchen möchten, können Sie mehrere Assemblies im Assembly Explorer auswählen und ein Assembly-Abhängigkeitsdiagramm anzeigen lassen.
Dieses visualisiert die Beziehungen, die durch Referenzen zwischen den ausgewählten Assemblies bestehen.
Kostenlos, kein Lizenzschlüssel erforderlich