生产厂商:JetBrains产品类别:开发工具
将.NET程序集反编译为C#
dotPeek是一款基于 ReSharper 捆绑反编译器的免费独立工具。它可以可靠地将任意.NET程序集反编译为对等的 C#或IL代码。
这款反编译器支持包括库(.dll)、可执行文件(.exe)和Windows元数据文件(.winmd)在内的多种格式。
将反编译代码导出至 Visual Studio项目
在反编译完程序集后,您可以将其另存为Visual Studio项目(.csproj)。如果您需要从旧程序集恢复丢失的源代码,此举可以为您节省大量的时间。
下载源代码并调试第三方代码
dotPeek可以根据PDB文件识别本地源代码,或者从Microsoft Reference Source Center或SymbolSource等源服务器中获取源代码。
dotPeek还可以作为符号服务器运行,为Visual Studio调试器提供调试程序集代码所需的信息。
导航和搜索
dotPeek从ReSharper继承了大量功能。其中包括上下文和上下文非敏感导航、用法搜索以及不同的代码结构和层次结构视图。
查找任意符号的用法
使用 Find Usages 可以搜索符号的所有用法,这些用法可以是方法、属性、局部变量或不同的实体。 借助 Find Results 工具窗口,您可以对用法分组、在用法中导航以及将其在代码视图区域中打开。
跳转到类型、符号或任意对象
当您将脱字符号放在代码视图区域中的符号上时,dotPeek可以通过 Navigate To 下拉菜单提供大量的上下文导航选项。
导航至相关代码
dotPeek可为程序集列表中的所有程序集及其引用的所有程序集编制索引,并提供快速跳转至特定代码的功能。例如,Go to Everything 让您可以搜索程序集、命名空间、类型、成员或近期打开的文件。
JetBrains ReSharper的老用户会对dotPeek感到得心应手,因为它提供与ReSharper相仿的导航与搜索、代码洞察和熟悉的键盘快捷键。
ReSharper Ultimate:一个许可证包含一套.NET工具和ReSharper C++
ReSharper Ultimate是一种包含各个JetBrains .NET工具和ReSharper C++的许可证。
每个ReSharper Ultimate许可证允许一名开发者使用ReSharper、ReSharper C++、dotCover、dotTrace和dotMemory。
dotPeek功能
将.NET程序集反编译为C#或IL
dotPeek可以将任意.NET程序集反编译为对等的C#代码,还可以选择显示基础IL代码。
库、可执行文件以及更多
dotPeek支持多种格式,例如库(.dll)、可执行文件(.exe)和元数据文件(.winmd)。
dotPeek也可以反编译 .baml 文件,让您能够重建XAML UI定义。
除了传统的程序集和可执行文件,您还可以使用dotPeek打开存档(.zip、.vsix 或 .nupkg)和文件夹。您还可以查找并从任意在线包源加载NuGet包(及其依赖项),或者加载VisualStudio项目的 packages.config 文件中列出的包。
查看源代码是否可用
反编译代码聊胜于无,不过有时您可以将程序集与它的源代码相匹配,那么为什么不利用这一点呢?dotPeek可以根据PDB文件识别本地源代码,或者从 Microsoft ReferenceSource Center 或 SymbolSource.org 等源服务器中获取源代码。此外,dotPeek可以生成PDB文件。
使用菜单栏中的导航模式下拉列表来选择您只想要dotPeek反编译程序集,还是尝试查找源代码(如果可能)。
显示或隐藏编译器生成的代码
您可以选择显示某些编译器转换,从而使dotPeek显示的代码结构与编译器转换后的代码结构非常相似。这有助于了解编译器如何处理 lambda、闭包和自动属性等对象。
探索正在运行的进程
Process Explorer 窗口可以显示当前正在运行的所有进程的列表,并且可以探索进程的模块以及对其中的.NET程序集进行反编译。您可以选择显示或隐藏原生进程和模块,或者打开进程层次结构视图。
筛选列表以查找您正在寻找的模块或进程,然后将其程序集添加到AssemblyExplorer中进行更深入的调查。
以单独视图查看IL代码
无论您何时想要在源代码以外深入了解,都可以从反编译的C#中的任意一点导航到IL代码。
最简单的方法是在与主代码查看器同步的单独工具窗口中显示IL代码。
以反编译的C#的注释形式查看IL代码
或者,您也可以选择以反编译的C#代码的注释形式显示IL代码,这实际上会将它的默认文本查看器和通常单独的 IL Viewer 窗口合并显示在一个视图中。
dotPeek可为反编译代码和从符号文件重现的源代码显示IL代码。
使用您偏好的颜色主题
dotPeek支持与VisualStudio相同的颜色主题集。
例如,您可以选择“蓝色”或“深色”主题,或者选择与Visual Studio设置同步颜色主题偏好设置。
以不同的方式导航反编译的代码
dotPeek基于ReSharper强大的代码洞察架构,让您能够以上下文相关或上下文无关的方式导航反编译的程序集,获得每个反编译文件中内容的快速摘要,设置书签以及探索继承链。
查找任意符号的用法
借助dotPeek,您可以通过多个选项搜索引用代码符号的位置。
调用 Find Usages 可以在所有加载的程序集中查找所有符号(例如方法或属性)的用法。 Find Results 工具窗口中会显示这些用法,您可以在窗口中对用法分组,在用法之间导航以及将它们在代码视图区域中打开。
还有 Find Usages Advanced,它是更详细版的 Find Usages,通过限制搜索范围和其他细节来帮助您优化搜索条件。
在代码查看器中高亮显示用法
dotPeek会自动高亮显示脱字符号下符号的所有可见用法,与最新版本的VisualStudio非常相似。这有助于改进反编译代码的可读性,特别是在您处理混淆的标识符时。
此外,如果您想要浏览文件中的所有用法,则无论它们是否可见,都请使用 Highlight Usages in File。这将会高亮显示当前文件中给定符号的所有用法,使用两种不同的颜色表示写入用法和读取用法。
探索当前文档
使用 Go to File Member 进行快速浏览,并导航到表示反编译类型的文档中的成员。输入部分成员名称,然后直接导航到它们。
或者,如果您想要静态显示当前文档中的成员,请打开 File Structure 工具窗口并将其停靠在某个位置。您也可以筛选此视图:选择工具窗口,开始输入字符,仅关注您感兴趣的类型成员。
跳到任意代码
通过为程序集列表中的所有程序集及其所有引用编制索引,dotPeek提供了两种快速跳转至特定代码的功能:
Go to Symbol 有助于您导航到特定的符号声明,可能是类型、方法、字段或属性。使用lowerCamelHumps语法可定位类型-例如,输入 xmard 可定位并打开 XamlMarkupDeclaredElement。
Go to Everything 让您可以搜索程序集、命名空间、类型、成员或最近打开的文件。
设置书签
如果存在您觉得重要并且想要以后返回来处理的反编译代码行,请设置书签。
使用一个快捷键拖动带编号的标记,并使用另一个快捷键随时跳回来。您可以创建多达10个带编号的书签以及无数个不带编号的书签。已加入书签的位置的完整列表将在一个弹出窗口中显示。
上下文导航
当您将脱字符号放在代码视图区域中的符号上时,dotPeek可以通过 Navigate To 下拉菜单提供大量的上下文导航选项。
例如,Go toDeclaration 会将您从任意符号的用法转到它的声明。如果该符号已在另一个程序集上声明,将自动加载程序集。
Go to Implementation 有助于导航到类型和类型成员的最终实现,跳过继承链中的中间步骤,例如抽象类。
其他有用的上下文导航选项包括 Go to Base Symbols 和 Go to Extension Methods。
导航类层次结构
如果您想在来自某个特定类型或类型成员的继承层次结构中上下导航,可以考虑使用 Go to Base Symbols 和 Go to Derived Symbols。
如果您想立即转到继承者或基本符号,这两个操作特别有用。
探索继承链
如果您希望获得特定继承链的可视摘要,请使用 Type Hierarchy。
dotPeek将在单独的工具窗口中以树形视图的形式显示从选定类型继承的所有类型,以及自我继承的类型。
了解程序集
dotPeek提供了相关的工具来快速抓取给定程序集的结构,了解程序集之间的关系,以及将程序集组织到离散的列表中,最后一项功能有助于仅关注与当前任务有关的程序集。
管理程序集列表
根据上下文的不同,您可以处理不同的程序集列表。您可以保存并重新打开程序集列表,如果您不再需要,还可以清除当前列表。程序集列表并不局限于 .dll 和 .exe 文件:它们也可以包含NuGet包、存档和文件夹。
探索程序集内容
在您处理程序集列表时,AssemblyExplorer 可以显示特定程序集具有的引用、资源和代码种类,从命名空间到类型成员。
对于每种类型,除了实际成员列表外,它还可以高亮显示表示其基类型和继承者的节点。也支持使用lowerCamelHumps进行快速搜索和节点筛选。
探索程序集元数据
dotPeek也可以帮助您探索程序集元数据,并深挖其中的所有项(表、blob、字符串等)。在 Metadata 节点下,您可以探索blob项的值、PE文件头、元数据表项的用法。
与程序集树中的其他位置一样,您可以双击元数据项来反编译并显示相应的代码。
查看程序集之间的依赖关系
如果您想了解程序集彼此之间的依赖关系,可以在 Assembly Explorer 中选择多个程序集,然后指示dotPeek显示程序集依赖关系图。
这将借助选定程序集的引用可视化它们之间存在的任何关系。