# FolderDiffIL4DotNet / `nildiff` (English)
[](https://github.com/Widthdom/FolderDiffIL4DotNet/actions/workflows/dotnet.yml)
[](https://github.com/Widthdom/FolderDiffIL4DotNet/actions/workflows/codeql.yml)
[](https://github.com/Widthdom/FolderDiffIL4DotNet/actions/workflows/release.yml)
[](https://github.com/Widthdom/FolderDiffIL4DotNet/actions/workflows/benchmark-regression.yml)




`FolderDiffIL4DotNet` 作为 `nildiff` .NET global tool 分发。它比较旧/新构建文件夹,减少由 IL metadata 噪声引起的 .NET assembly 误报,并生成可归档用于发布签发的审查产物。
为何开发此工具:
- 比较旧/新构建版本,而无需追踪由 MVID、timestamp 和其他构建元数据引起的误报。
- 生成 Markdown、交互式 HTML 和 JSON 审计产物,供人工审查。
- 保持发布比较的独立性和离线友好性。
有关完整的用法和配置参考,请参阅 [USER_GUIDE.md](USER_GUIDE.md)。
## 快速开始
需要 [.NET SDK 8.x](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) 或更高版本。
```
dotnet tool install -g nildiff
dotnet tool install -g dotnet-ildasm
nildiff "/path/to/old-folder" "/path/to/new-folder" "my-comparison" --no-pause
```
打开报告文件夹:
```
nildiff --open-reports
```
检查 IL 反汇编程序检测:
```
nildiff --doctor
```
`nildiff --version` 会打印与 GitHub 发布和 NuGet 包相同的公开 SemVer。`nildiff --doctor` 会保留详细的构建/提交版本用于诊断。
从源码构建:
```
git clone https://github.com/Widthdom/FolderDiffIL4DotNet.git
cd FolderDiffIL4DotNet
dotnet build
dotnet run -- "/path/to/old-folder" "/path/to/new-folder" "my-comparison" --no-pause
```
## 用法
```
nildiff
[report-label] [options]
```
常用选项:
| 选项 | 用途 |
| --- | --- |
| `--config ` | 加载特定的 `config.json`。 |
| `--output ` | 将报告写入自定义输出目录下。 |
| `--skip-il` | 跳过 IL 比较并仅使用 SHA256/文本比较。 |
| `--threads ` | 为本次运行覆盖比较并行度。 |
| `--fail-on-diff` | 生成所有产物后,如果最终仍有 Added/Removed/Modified 条目,则以代码 `5` 退出。 |
| `--print-config` | 打印应用环境变量和支持的 CLI 覆盖后的有效 builder 状态,不进行语义验证。 |
| `--validate-config` | 在应用运行时 CLI 覆盖之前,验证 `config.json` 以及 `FOLDERDIFF_*` 环境变量覆盖。 |
| `--open-reports` | 打开报告文件夹并退出。 |
| `--version` | 打印公开发布/NuGet 的 SemVer 并退出。 |
| `--doctor` | 打印构建/提交诊断信息,探测 `dotnet-ildasm` / `ilspycmd` 的可用性,并显示安装指南。 |
完整的 CLI 行为、HTML 审查工作流、完整性检查、语义变更表和配置详情请参见 [USER_GUIDE.md](USER_GUIDE.md#readme-en-usage)。
## 配置
`config.json` 是可选的;省略的键使用代码定义的默认值。对于普通的 diff 运行,在加载 [`config.json`](config.json) 并应用环境变量和运行时 CLI 覆盖后,系统会在比较开始前验证有效配置。
详细的配置表已移至 [USER_GUIDE.md](USER_GUIDE.md#readme-en-config)。带注释的示例保留在 [doc/config.sample.jsonc](doc/config.sample.jsonc) 中,用于 IDE 自动补全的 JSON Schema 是 [doc/config.schema.json](doc/config.schema.json)。
当前验证的数字约束包括 [`InlineDiffContextLines`](USER_GUIDE.md#config-en-inlinediffcontextlines) >= `0` 和 [`ILCacheMaxMemoryMegabytes`](USER_GUIDE.md#config-en-ilcachemaxmemorymegabytes) >= `0`。
## 生成的产物
默认情况下,每次运行都会在 `Reports/