ILSpy

ILSpy 是开源的、跨平台的 .NET 程序集浏览器和反编译器。桌面 UI 可在 Windows、Linux 和 macOS 上运行(基于 Avalonia 构建)。
下载:最新发布 | 最新 CI 构建(master) | Microsoft Store(仅限 RTM 版本)
反编译器前端
除了跨平台桌面 UI ILSpy(可通过 Releases 下载,另请参阅插件)之外,还提供以下其他前端:
功能
- 反编译为 C#(请查看语言支持状态)
- 整个项目反编译
- 从 NuGet 源打开、从正在运行的进程打开,此外还可从磁盘和 GAC 打开(仅限 Windows)
- 搜索类型/方法/属性(了解选项)
- 基于超链接的类型/方法/属性导航、书签
- 基类型/派生类型导航、历史记录
- 程序集元数据资源管理器(功能演示)
- BAML 转 XAML 反编译器、!AvaloniaResources 支持
- 对 .NET Core 的 ReadyToRun 二进制文件支持(参见教程)
- 可通过插件扩展
- DEBUG 构建中的附加功能(面向开发者)
许可证
ILSpy 在 MIT 许可证下分发。详细信息请参阅关于文档,以及所包含开源库的第三方声明。
如何构建
Windows:
- 请确保安装了 Windows PowerShell(至少为版本 5.0)或 PowerShell 7+。
- 使用 git 克隆 ILSpy 仓库。
- 执行
git submodule update --init --recursive 以下载 ILSpy-Tests 子模块(某些测试用例会用到)。
- 安装 Visual Studio(文档记录版本:18.0/2026)。您需要以下工作负载组件:
- 工作负载“.NET 桌面开发”。该工作负载包含 .NET Framework 4.8 SDK 和 .NET Framework 4.7.2 目标包,以及 .NET 10.0 SDK(ILSpy.csproj 面向 .NET 10.0,但我们也有 net472 项目)。我们的单元测试需要 .NET 11.0 SDK。
- 工作负载“Visual Studio 扩展开发”(注意:ILSpy.VSExtensions.slnx 与 ILSpy.sln 相互独立,因此此工作负载为可选项)
- 单个组件“MSVC v143 - VS 2022 C++ x64/x86 构建工具”(或类似组件)
- VC++ 工具集是可选的;如果存在,它将用于
editbin.exe 将 ILSpy.exe 使用的堆栈大小从 1MB 修改为 16MB,因为反编译器大量使用递归,而较小的堆栈大小会在非常复杂的方法中导致问题。
- 在 Visual Studio 中打开 ILSpy.sln。
- NuGet 包还原将自动下载其他依赖项
- 运行“ILSpy”项目以获得 ILSpy UI
- 使用 Visual Studio 的“测试资源管理器”查看/运行测试
- 如果您只对 ILSpy 的某个特定子集感兴趣,还可以使用
- ILSpy.Desktop.slnf:用于跨平台 Avalonia UI 及其测试
- ILSpy.XPlat.slnf:用于跨平台 CLI(ilspycmd)或 PowerShell cmdlet
- ILSpy.VSExtensions.slnx:用于 Visual Studio 扩展
注意: Visual Studio 包含由 Visual Studio 安装程序管理的 .NET SDK 版本 - 一旦您更新,它也可能被升级。
请注意,ILSpy 仅与 .NET 11.0 SDK 兼容,Visual Studio 将拒绝加载解决方案中的某些项目(单元测试也会失败)。
如果发生此问题,请从此处手动安装 .NET 11.0 SDK。
Unix / Mac:
- 确保已安装 .NET 10.0 SDK(用于运行)和 .NET 11.0 SDK(用于测试)。
- 确保已安装 PowerShell(以前称为 PowerShell Core)
- 使用 git 克隆仓库。
- 执行
git submodule update --init --recursive 以下载 ILSpy-Tests 子模块(某些测试用例会用到)。
- 使用
dotnet build ILSpy.Desktop.slnf 构建跨平台 Avalonia 桌面 UI;使用 dotnet run --project ILSpy 运行它。
- 使用
dotnet build ILSpy.XPlat.slnf 仅构建 CLI 工具(ilspycmd)和 PowerShell cmdlet。
如何贡献
当前和过去的贡献者。
ILSpy 隐私政策
ILSpy 不收集任何个人身份信息,也不会将用户文件发送给第三方服务。
ILSpy 不使用任何 APM(Application Performance Management,应用程序性能管理)服务来收集遥测数据或指标。