This page outlines what has changed in recent versions of dotPeek. Highlights
include support for Portable PDB files and SourceLink, a metadata viewer,
an assembly dependency diagram and navigation improvements.
dotPeek 2018.1 brings several improvements to decompile modern C# features. Now, dotPeek is able to decompile:
async Main method.
await inside catch/finally blocks.
ref/readonly returns and locals.
Open from NuGet package cache 2017.3
dotPeek 2017.3 is able to open any NuGet package stored in the NuGet package cache folder.
Unlike the Open from Nuget
action, Open from NuGet Packages Cache
does not download
any package from NuGet gallery, but shows you all locally available ones.
Show PDB content 2017.3
The Show PDB content
action generates a readable XML file from PDB file for selected assembly.
The resulting XML file contains:
Source file names.
Mapping between IL offsets and source lines.
Names of local variables.
Entry point method, if present.
A type of PDB file: Windows/Portable/Embedded.
Source server info: SourceLink/SrcSrv.
SourceLink format support 2017.3
is a new way of embedding information about an assembly's original source code
into the Portable PDB and the Windows PDB
dotPeek and ReSharper now both support SourceLink: if a decompiled
assembly was compiled with the /sourcelink: <file> compiler flag and the
source_link.json file was generated, dotPeek will now download sources referenced in the
PDB or use embedded source files when available.
Navigation and search improvements 2017.2
dotPeek 2017.2 brings a set of navigation and search improvements:
You can now search for multiple usages inside your decompiled methods,
and use the Find Results window to navigate between them.
Go to String allows searching for string literals defined inside attributes.
Search for any string in a compiled assembly and navigate to it directly.
Presentation of long and multiline strings is improved: when you search for a substring
in such strings, dotPeek navigates to the substring position instead of
jumping to the start of the string.
Support for Portable PDBs 2017.1
dotPeek can now generate not only traditional PDB files which are Windows-only, but also
Portable PDB files. The type of the generated PDB is determined automatically and depends
on the selected assembly.
It is also possible to explore the contents of the Portable PDB file associated with the
which is presented in the same way as the assembly metadata.
Finally, you can use sources embedded in Portable PDB files for navigation purposes.
Exploring assembly metadata 2016.3
dotPeek 2016.3 helps you explore assembly metadata and dig through all items (tables, blobs,
strings, etc.) inside it.
Under the Metadata node, you can explore values of blob items, PE file headers,
usages of metadata table items.
Same as elsewhere in the assembly tree, you can
double-click metadata items to decompile and display the corresponding code.
Assembly dependency diagram
dotPeek 2016.2 can display the assembly dependency diagram, which extends the family of
dependency analysis tools
available in dotPeek and ReSharper.
You can invoke the diagram on selected assemblies in the Assembly Explorer
and explore connections that are established between the assemblies by virtue of their
Improved IL code viewer
dotPeek 2016.2 improves its IL Viewer in order to display code in a more readable manner:
Types, members, type parameters, and local variables, method parameters, labels,
commented metadata tokens are now automatically highlighted;
Loops can now be distinguished with indents and comments.
Browsing NuGet packages
For a long time, opening .nupkg files from disk was the only way to
load assemblies from NuGet packages.
In version 2016.1, there are now two more ways: you can find and load NuGet
packages (and their dependencies if necessary) from any online package source, or load
packages listed in a packages.config file in your Visual Studio project.
Highlighting of symbol usages
dotPeek learns to automatically highlight usages of the symbol under the caret.
Among other benefits, it is much harder now for obfuscated identifiers to get lost as easily
in decompiled code.