用于探索已编译 .NET 程序集的免费工具,替代 .NET Reflector?

软件推荐 免费 软件开发 。网 反编译器
2021-10-11 22:45:57

您会推荐一个免费工具来探索已编译的 .NET 程序集吗?我需要能够:

  • 探索程序集的源代码并将 IL 可视化为选择的 CLR 语言(C#、VB.NET、托管 C++ 等)
  • 支持类之间的导航(例如通过Ctrl+单击类名,或其他方便的方式)。
  • 允许检查程序集中的嵌入资源(如果有)(文本、图像等)
  • 能够处理自 .NET 2.0 版以来的程序集。

或者,如果它支持,我会很高兴:

  • 将类导出到源文件。
  • 与允许调试源代码的 Visual Studio 2010 集成(这个不一定是免费的)。
  • 与 Xamarin Studio IDE(以前的 MonoDevelop)集成将是一个加分项,尽管我在这里变得过于乐观。

几年前我曾经使用过 .NET Reflector,它支持上述大部分功能(实际上除了 Xamarin 集成之外的所有功能)。几周前我尝试再次使用它,但现在它已成为商业产品,我的旧免费版本不再工作。

4个回答

ILSpy是最流行的 FOSS .NET 反编译器之一。使用起来非常直观,虽然我还没有尝试过 Reflector,所以我无法比较它们。

不幸的是,它并不能完全满足您的要求,尽管它已经接近了。不支持反编译为 C++/CLI,但它确实适用于 IL、C# 和 VB.NET。

您可以单击类和方法名称以导航到它们的定义,或通过上下文菜单分析它们的访问位置。它可以从嵌入式资源中渲染图像和文本,并允许您保存它们 - 我没有尝试过其他文件类型,但它们应该以相同的方式工作。

您可以将类导出到源文件,甚至可以将整个程序集导出到.csproj(MS 构建)文件中。对于更简单的项目,这些可以直接编译。许多更复杂的项目往往无法在不修改的情况下编译 - 值得注意的是,他们的网站提到它无法反编译然后重新编译自身。如果您需要反编译整个程序集,您可能需要做很多工作才能使其进入可编译状态。

不幸的是,反编译并不完美。一些更复杂的语言结构(如 C#'s dynamic)尚不受支持,可能会导致输出有些乱码。您仍然可以通过混乱获得通用算法,但如果您只是想复制一些代码,它肯定行不通。

IDE 集成。Visual Studio有一个早期的尝试,尽管它似乎已被放弃。Xamarin 似乎也没有任何集成(什么时候发生的?)。然而,ILSpy 的开发者也创建了 SharpDevelop,最近的消息表明他们正在计划 SharpDevelop 集成


如果您想要其他选项,还有dotPeekJustDecompile他们确实声称拥有 Visual Studio 扩展,并且可能会在一些知名公司的支持下更加完善。我不需要使用它们中的任何一个(ILSpy 可以满足我的所有需求),但它们可能更适合您的要求。

Telerik开发了另一个工具 - JustDecompile它工作得非常好,并且具有 .NET Reflector 的所有功能,还有一些。(包括视觉工作室扩展)。它也是免费的,这很好。自从它问世以来,我一直在使用它,而且非常好。

我最喜欢的功能之一位于工具菜单“创建项目”下,它获取程序集并从中构建一个 csproj 文件。

只需使用 Mysql 数据提供程序进行反编译

我个人是Jetbrains dotPeek的忠实粉丝,因为它与 Resharper 结合得非常好,并且有一些额外的功能可以引入 .pdb:

在此处输入图像描述

这里的答案对于提出问题的时间来说是很好的。与此同时,恕我直言,dnSpy的表现优于他们。

  • ✓ 可视化为 C# 或 VB.NET - 或 IL
  • ✓ 类之间的导航 - 通过 Ctrl+单击
  • ✓ 资源检查 - 实时预览
  • ? 从 2.0 开始处理 .NET - 我找不到这么旧的测试程序 :-)
  • ✓ 将类导出到源文件 - 仅限整个项目。我找不到单节课

它还具有其他有用的功能:

  • 直接编辑代码
  • 语法高亮
  • 调试

我以前使用过 dotPeek,但在 2 年前用 dnSpy 取代了它,我很高兴。