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:
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:
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:
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.
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.
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)