dotPeek 功能

将 .NET 程序集反编译为 C# 或 IL

dotPeek 可以将任意 .NET 程序集反编译为对等的 C# 代码,还可以选择显示基础 IL 代码。

dotPeek UI 概览

库、可执行文件以及更多

dotPeek 支持多种格式,例如库 (.dll)、可执行文件 (.exe) 和元数据文件 (.winmd)。

dotPeek 也可以反编译 .baml 文件,让您能够重建 XAML UI 定义。

除了传统的程序集和可执行文件,您还可以使用 dotPeek 打开存档(.zip.vsix.nupkg)和文件夹。 您还可以查找并从任意在线包源加载 NuGet 包(及其依赖项),或者加载 Visual Studio 项目的 packages.config 文件中列出的包。

查看源代码是否可用

查看源代码是否可用

反编译代码聊胜于无,不过有时您可以将程序集与它的源代码相匹配,那么为什么不利用这一点呢? dotPeek 可以根据 PDB 文件识别本地源代码,或者从 Microsoft Reference Source CenterSymbolSource.org 等源服务器中获取源代码。 此外,dotPeek 可以生成 PDB 文件。

使用菜单栏中的导航模式下拉列表来选择您只想要 dotPeek 反编译程序集,还是尝试查找源代码(如果可能)。

显示编译器生成的代码

显示或隐藏编译器生成的代码

您可以选择显示某些编译器转换,从而使 dotPeek 显示的代码结构与编译器转换后的代码结构非常相似。 这有助于了解编译器如何处理 lambda、闭包和自动属性等对象。

dotPeek 中的 Process Explorer 窗口

探索正在运行的进程

Process Explorer 窗口可以显示当前正在运行的所有进程的列表,并且可以探索进程的模块以及对其中的 .NET 程序集进行反编译。 您可以选择显示或隐藏原生进程和模块,或者打开进程层次结构视图。

筛选列表以查找您正在寻找的模块或进程,然后将其程序集添加到Assembly Explorer中进行更深入的调查。

dotPeek 中的 IL 代码查看器

以单独视图查看 IL 代码

无论您何时想要在源代码以外深入了解,都可以从反编译的 C# 中的任意一点导航到 IL 代码。

最简单的方法是在与主代码查看器同步的单独工具窗口中显示 IL 代码。

dotPeek 可为反编译代码和从符号文件重现的源代码显示 IL 代码。

以 C# 代码的注释形式显示的 IL 代码

以反编译的 C# 的注释形式查看 IL 代码

或者,您也可以选择以反编译的 C# 代码的注释形式显示 IL 代码,这实际上会将它的默认文本查看器和通常单独的 IL Viewer 窗口合并显示在一个视图中。

dotPeek 中的深色主题

使用您偏好的颜色主题

dotPeek 支持与 Visual Studio 相同的颜色主题集。

例如,您可以选择“蓝色”或“深色”主题,或者选择与 Visual Studio 设置同步颜色主题偏好设置。

以不同的方式导航反编译的代码

dotPeek 基于 ReSharper 强大的代码洞察架构,让您能够以上下文相关或上下文无关的方式导航反编译的程序集,获得每个反编译文件中内容的快速摘要,设置书签以及探索继承链。

Find Results 会列出所有找到的符号用法

查找任意符号的用法

借助 dotPeek,您可以通过多个选项搜索引用代码符号的位置。

调用 Find Usages 可以在所有加载的程序集中查找所有符号(例如方法或属性)的用法。 Find Results 工具窗口中会显示这些用法,您可以在窗口中对用法分组,在用法之间导航以及将它们在代码视图区域中打开。

还有 Find Usages Advanced,它是更详细版的 Find Usages,通过限制搜索范围和其他细节来帮助您优化搜索条件。

高亮显示文件中的用法

在代码查看器中高亮显示用法

dotPeek 会自动高亮显示脱字符号下符号的所有可见用法,与最新版本的 Visual Studio 非常相似。 这有助于改进反编译代码的可读性,特别是在您处理混淆的标识符时。

此外,如果您想要浏览文件中的所有用法,则无论它们是否可见,都请使用 Highlight Usages in File。 这将会高亮显示当前文件中给定符号的所有用法,使用两种不同的颜色表示写入用法和读取用法。

File Structure 窗口

探索当前文档

使用 Go to File Member 进行快速浏览,并导航到表示反编译类型的文档中的成员。 输入部分成员名称,然后直接导航到它们。

或者,如果您想要静态显示当前文档中的成员,请打开 File Structure 工具窗口并将其停靠在某个位置。 您也可以筛选此视图:选择工具窗口,开始输入字符,仅关注您感兴趣的类型成员。

使用 Go to Everything 跳到特定的类型、文件、成员等。

跳到任意代码

通过为程序集列表中的所有程序集及其所有引用编制索引,dotPeek 提供了两种快速跳转至特定代码的功能:

  • Go to Symbol 有助于您导航到特定的符号声明,可能是类型、方法、字段或属性。 使用 lowerCamelHumps 语法可定位类型 - 例如,输入 xmard 可定位并打开 XamlMarkupDeclaredElement
  • Go to Everything 让您可以搜索程序集、命名空间、类型、成员或最近打开的文件。
dotPeek 中的书签

设置书签

如果存在您觉得重要并且想要以后返回来处理的反编译代码行,请设置书签。

使用一个快捷键拖动带编号的标记,并使用另一个快捷键随时跳回来。 您可以创建多达10个带编号的书签以及无数个不带编号的书签。 已加入书签的位置的完整列表将在一个弹出窗口中显示。

上下文相关的导航选项

上下文导航

当您将脱字符号放在代码视图区域中的符号上时,dotPeek 可以通过 Navigate To 下拉菜单提供大量的上下文导航选项。

例如,Go to Declaration 会将您从任意符号的用法转到它的声明。 如果该符号已在另一个程序集上声明,将自动加载程序集。

Go to Implementation 有助于导航到类型和类型成员的最终实现,跳过继承链中的中间步骤,例如抽象类。

其他有用的上下文导航选项包括 Go to Base SymbolsGo to Extension Methods

转到派生类型

导航类层次结构

如果您想在来自某个特定类型或类型成员的继承层次结构中上下导航,可以考虑使用 Go to Base SymbolsGo to Derived Symbols

如果您想立即转到继承者或基本符号,这两个操作特别有用。

类型层次结构视图

探索继承链

如果您希望获得特定继承链的可视摘要,请使用 Type Hierarchy

dotPeek 将在单独的工具窗口中以树形视图的形式显示从选定类型继承的所有类型,以及自我继承的类型。

了解程序集

dotPeek 提供了相关的工具来快速抓取给定程序集的结构,了解程序集之间的关系,以及将程序集组织到离散的列表中,最后一项功能有助于仅关注与当前任务有关的程序集。

dotPeek 可以帮助您浏览文件夹、存档和 NuGet 包

管理程序集列表

根据上下文的不同,您可以处理不同的程序集列表。 您可以保存并重新打开程序集列表,如果您不再需要,还可以清除当前列表。 程序集列表并不局限于 .dll.exe 文件:它们也可以包含 NuGet 包、存档和文件夹。

dotPeek Assembly Explorer

探索程序集内容

在您处理程序集列表时,Assembly Explorer 可以显示特定程序集具有的引用、资源和代码种类,从命名空间到类型成员。

对于每种类型,除了实际成员列表外,它还可以高亮显示表示其基类型和继承者的节点。 也支持使用 lowerCamelHumps 进行快速搜索和节点筛选。

使用 dotPeek 探索程序集元数据

探索程序集元数据

dotPeek 也可以帮助您探索程序集元数据,并深挖其中的所有项(表、blob、字符串等)。 在 Metadata 节点下,您可以探索 blob 项的值、PE 文件头、元数据表项的用法。

与程序集树中的其他位置一样,您可以双击元数据项来反编译并显示相应的代码。

程序集依赖关系图

查看程序集之间的依赖关系

如果您想了解程序集彼此之间的依赖关系,可以在 Assembly Explorer 中选择多个程序集,然后指示 dotPeek 显示程序集依赖关系图。

这将借助选定程序集的引用可视化它们之间存在的任何关系。

下载 dotPeek

免费使用,无需许可证密钥