icsharpcode/ILSpy
GitHub: icsharpcode/ILSpy
开源、跨平台的 .NET 程序集浏览器与反编译器,将编译后的 .NET 二进制还原为可读的 C# 源码供开发者分析使用。
Stars: 25431 | Forks: 3674
# ILSpy [](https://nuget.org/packages/ICSharpCode.Decompiler)  [](https://hachyderm.io/@ilspy) [](https://bsky.app/profile/ilspy.bsky.social) [](https://visualstudiogallery.msdn.microsoft.com/8ef1d688-f80c-4380-8004-2ec7f814e7de)
ILSpy 是开源、跨平台的 .NET assembly 浏览器和反编译器。桌面 UI 运行于 Windows、Linux 和 macOS(基于 [Avalonia](https://avaloniaui.net/) 构建)。
下载:[最新发布版本](https://github.com/icsharpcode/ILSpy/releases) | [最新 CI build (master)](https://github.com/icsharpcode/ILSpy/actions?query=workflow%3A%22Build+ILSpy%22+branch%3Amaster+is%3Asuccess+event%3Apush) | [Microsoft Store (仅限 RTM 版本)](https://apps.microsoft.com/store/detail/ilspy-fresh/XP8C26VDWLP4T4)
## 反编译器前端
除了跨平台的桌面 UI ILSpy(可通过 Releases 下载,另请参阅 [plugins](https://github.com/icsharpcode/ILSpy/wiki/Plugins))之外,还提供以下其他前端:
* Visual Studio 2022/2026 默认启用了对 F12 的反编译支持(分别使用我们的 v8.2 和 v9.1 引擎)。
* 我们的 Visual Studio 2022 扩展 [marketplace](https://marketplace.visualstudio.com/items?itemName=SharpDevelopTeam.ILSpy2022)(同样适用于 VS 2026)
* 我们的 Visual Studio Code 扩展 [repository](https://github.com/icsharpcode/ilspy-vscode) | [marketplace](https://marketplace.visualstudio.com/items?itemName=icsharpcode.ilspy-vscode) | [open-vsx](https://open-vsx.org/extension/icsharpcode/ilspy-vscode)
* 我们适用于 Linux/Mac/Windows 的 dotnet 工具 —— 请查看此仓库中的 [ILSpyCmd](ICSharpCode.ILSpyCmd) | [dotnet tool install](https://www.nuget.org/packages/ilspycmd/)
* [C# for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) 也内置了反编译支持。若要启用,请激活设置 "Enable Decompilation Support"。
* 在 Visual Studio 2019 中,您必须手动启用 F12 支持。转到 Tools / Options / Text Editor / C# / Advanced 并勾选 "Enable navigation to decompiled source"
* 我们的 Visual Studio 2017/2019 扩展 [marketplace](https://marketplace.visualstudio.com/items?itemName=SharpDevelopTeam.ILSpy)
* 适用于您自己项目的 [ICSharpCode.Decompiler](https://www.nuget.org/packages/ICSharpCode.Decompiler/) NuGet 包
* 本仓库中适用于 Linux/Mac/Windows 的 [PowerShell cmdlets](ICSharpCode.Decompiler.PowerShell)
## 功能特性
* 反编译为 C#(查看[语言支持状态](https://github.com/icsharpcode/ILSpy/issues/829))
* 整个项目反编译
* 搜索类型/方法/属性(了解相关[选项](https://github.com/icsharpcode/ILSpy/wiki/Search-Options))
* 基于超链接的类型/方法/属性导航
* 基类/派生类导航,历史记录
* Assembly metadata 浏览器([功能详解](https://github.com/icsharpcode/ILSpy/wiki/Metadata-Explorer))
* BAML 到 XAML 反编译器
* 支持 .NET Core 的 ReadyToRun 二进制文件(参见[教程](https://github.com/icsharpcode/ILSpy/wiki/ILSpy.ReadyToRun))
* 通过 [plugins](https://github.com/icsharpcode/ILSpy/wiki/Plugins) 进行扩展
* DEBUG build 中的附加功能([面向开发者](https://github.com/icsharpcode/ILSpy/wiki/Additional-Features-in-DEBUG-Builds))
## 许可证
ILSpy 基于 MIT 许可证分发。详情请参阅 [About](doc/ILSpyAboutPage.txt) 文档,
以及所包含开源库的[第三方声明](doc/third-party-notices.txt)。
## 如何构建
#### Windows:
- 确保已安装 Windows PowerShell(至少版本)5.0 或 [PowerShell](https://github.com/PowerShell/PowerShell) 7+。
- 使用 git 克隆 ILSpy 仓库。
- 执行 `git submodule update --init --recursive` 以下载 ILSpy-Tests submodule(供部分测试用例使用)。
- 安装 Visual Studio(文档版本:18.0/2026)。您需要以下工作负载组件:
- 工作负载 ".NET Desktop Development"。此工作负载包含 .NET Framework 4.8 SDK 和 .NET Framework 4.7.2 targeting pack,以及 [.NET 10.0 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)(ILSpy.csproj 目标框架为 .NET 10.0,但我们也有 net472 项目)。我们的单元测试需要 [.NET 11.0 SDK](https://dotnet.microsoft.com/download/dotnet/11.0)。
- 工作负载 "Visual Studio extension development"(注意:ILSpy.VSExtensions.sln 独立于 ILSpy.sln,因此此工作负载是可选的)
- 单个组件 "MSVC v143 - VS 2022 C++ x64/x86 build tools"(或类似组件)
- _VC++ 工具集是可选的_;如果存在,它将用于 `editbin.exe` 将 ILSpy.exe 使用的堆栈大小从 1MB 修改为 16MB,因为反编译器大量使用递归,较小的堆栈大小会导致在极其复杂的方法中出现问题。
- 在 Visual Studio 中打开 ILSpy.sln。
- NuGet 包还原将自动下载其他依赖项
- 运行项目 "ILSpy" 以启动 ILSpy UI
- 使用 Visual Studio 的 "Test Explorer" 查看/运行测试
- 如果您只对 ILSpy 的特定子集感兴趣,您还可以使用
- ILSpy.Desktop.slnf:用于跨平台 Avalonia UI 及其测试
- ILSpy.XPlat.slnf:用于跨平台 CLI (ilspycmd) 或 PowerShell cmdlets
- ILSpy.VSExtensions.sln:用于 Visual Studio 扩展
**注意:** Visual Studio 包含一个由 Visual Studio 安装程序管理的 .NET SDK 版本 —— 一旦您更新,它可能也会被升级。
请注意,ILSpy 仅兼容 .NET 11.0 SDK,Visual Studio 将拒绝加载解决方案中的某些项目(并且单元测试会失败)。
如果出现此问题,请从[此处](https://dotnet.microsoft.com/download/dotnet/11.0)手动安装 .NET 11.0 SDK。
#### Unix / Mac:
- 确保已安装 [.NET 10.0 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)(用于运行)和 [.NET 11.0 SDK](https://dotnet.microsoft.com/download/dotnet/11.0)(用于测试)。
- 确保已安装 [PowerShell](https://github.com/PowerShell/PowerShell)(以前称为 PowerShell Core)
- 使用 git 克隆仓库。
- 执行 `git submodule update --init --recursive` 以下载 ILSpy-Tests submodule(供部分测试用例使用)。
- 使用 `dotnet build ILSpy.Desktop.slnf` 构建跨平台 Avalonia 桌面 UI;使用 `dotnet run --project ILSpy` 运行它。
- 使用 `dotnet build ILSpy.XPlat.slnf` 仅构建 CLI 工具 (ilspycmd) 和 PowerShell cmdlets。
## 如何贡献
- 报告 bug
- 如果您想贡献 pull request,请将 https://github.com/icsharpcode/ILSpy/blob/master/BuildTools/pre-commit 添加到您的 `.git/hooks` 目录中,以防止提交格式错误的代码。我们使用制表符而不是空格。build server 运行相同的脚本,因此任何格式错误的 pull request 都将失败。
当前及以往的[贡献者](https://github.com/icsharpcode/ILSpy/graphs/contributors)。
## ILSpy 隐私政策
ILSpy 不会收集任何个人身份信息,也不会将用户文件发送给第三方服务。
ILSpy 不使用任何 APM (Application Performance Management) 服务来收集 telemetry 或指标。
标签:Avalonia, SOC Prime, 云资产清单, 反编译器, 多人体追踪, 开发工具, 逆向工程