Child pages
  • Introducing JetBrains dotPeek

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The primary idea behind dotPeek is to bring ReSharper experience to browsing external assemblies and make this available to everyone. The main thing that distinguishes dotPeek from other decompilers around is that the majority of ReSharper navigation features are available in dotPeek as well. Let's take a closer look at those:

Navigating

...

Decompiled Code

When you're loading an assembly and you don't know what you're looking for and you want to find out how things are organized within an the assembly, use you start off with assembly explorer . If you know exactly and you probably proceed by navigating between symbol declarations in the code view area.
However, you go a different path if you know exactly (or even approximately) which part of the assembly you need to look at - in this case, you can use one of ReSharper's "go to" context-insensitive navigation features:

Navigating to a Type

Use Navigate > Go to

...

Type (Ctrl+N) to navigate to a specific class or interface. You type in the name of the type you want to find, and dotPeek searches for a match within all loaded assemblies. Here again, the concept of CamelHumps is applicable - you don't need to type DynamicMethodGenerator to open this class - typing dmg is enough:

...

Image Added

Navigating to a Specific Symbol

Use Navigate > Go to Symbol (Ctrl+Shift+Alt+N) to navigate to an specific declaration, which could be a type, method, field, or property. Again, use CamelHumps to narrow down the list of symbols that dotPeek presents:
Image Added
Since symbols are a lot more numerous than types, and there can possibly be multiple symbols with the same name, you may want to spend a little more time investigating the list of results. One way to do that is press the plus sign (Show in Find Results) while dotPeek shows symbols in the Go to Symbol drop-down list - this will allow you to flush all found results to the Find Results tool window where you can take your time to investigate them, group based on different criteria, copy to clipboard or export to a file.

Image Added

Navigating Between File Members

As soon as you've opened a specific type, use Navigate > Go to File Member

...

for a quick overview of and navigation to members in this file.

Image Added

Alternatively, use File Structure
There's also Go to File but in the context of dotPeek, it is limited to temporary files from dotPeek decompiled code cache, so you can use it as an extended tab switcher that also sees any tabs that you've ever closed.

  • Context-sensitive navigation (go to declaration/base/inheritor/implementation)..
  • Tool windows (File Structure, Type Hierarchy)..
  • Navigate between tool windows (from code view to assembly explorer)

...