Funktionsmerkmale von dotPeek

.NET-Assemblies nach C# oder IL dekompilieren

dotPeek kann jede .NET-Assembly in gleichwertigen C#-Code dekompilieren und optional den zugrunde liegenden IL-Code anzeigen.

Übersicht der dotPeek-Bedienoberfläche

Bibliotheken, ausführbare Dateien und mehr

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.

Quellcode einsehen, falls verfügbar

Quellcode einsehen, falls verfügbar

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.

Vom Compiler generierten Code anzeigen

Vom Compiler generierten Code anzeigen oder ausblenden

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.

Process-Explorer-Fenster in dotPeek

Untersuchung laufender Prozesse

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.

IL-Code-Viewer in dotPeek

Separate Ansicht für IL-Code

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.

IL-Code, angezeigt in Form von C#-Kommentaren

Darstellung des IL-Codes als Kommentare im dekompilierten C#-Code

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.

Dunkles Farbdesign in dotPeek

Nutzen Sie Ihr bevorzugtes Farbdesign

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.

Verschiedene Navigationsmöglichkeiten in dekompiliertem Code

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.

Das Find-Results-Fenster zeigt alle gefundenen Verwendungen eines Symbols an

Verwendungen beliebiger Symbole finden

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.

Verwendungen
                                    in der Datei hervorheben

Hervorheben von Verwendungen im Code-Viewer

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.

Dateistruktur-Fenster

Aktuelles Dokument durchsuchen

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.

Mit Go to Everything können Sie zu bestimmten Typen, Dateien, Membern usw. springen.

Zu beliebigem Code springen

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:

  • Go to Symbol bringt Sie zur Deklaration eines bestimmten Symbols (Typ, Methode, Feld oder Eigenschaft). Durch die lowerCamelHumps-Syntax – Eingabe von Teilen eines CamelCase-Namens in Kleinschreibung, zum Beispiel xmard für XamlMarkupDeclaredElement – können Sie Typen leicht finden und öffnen.
  • Mit Go to Everything können Sie nach einer Assembly, einem Namensraum, Typ, Member oder einer kürzlich geöffneten Datei suchen.
Lesezeichen in dotPeek

Lesezeichen setzen

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.

Kontextabhängige Navigationsoptionen

Kontextbasierte Navigation

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.

Funktion „Go to derived types“

Navigation in Klassenhierarchien

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.

Typhierarchie-Ansicht

Vererbungshierarchien untersuchen

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.

Assemblies überblicken

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.

Mit dotPeek können Sie in Ordnern, Archiven und NuGet-Paketen navigieren.

Assembly-Listen verwalten

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.

Der Assembly Explorer in dotPeek

Assembly-Inhalte untersuchen

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.

Assembly-Metadaten mit dotPeek untersuchen

Assembly-Metadaten untersuchen

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.

Assembly-Abhängigkeitsdiagramm

Abhängigkeiten zwischen Assemblies anzeigen

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.

dotPeek herunterladen

Kostenlos, kein Lizenzschlüssel erforderlich