diff --git a/FINAL_VERIFICATION.md b/FINAL_VERIFICATION.md
new file mode 100644
index 0000000..81a94a6
--- /dev/null
+++ b/FINAL_VERIFICATION.md
@@ -0,0 +1,180 @@
+# 最终验证结果 (Final Verification Results)
+
+## ✅ 修改成功完成!
+
+### 1. NuSpec 文件确认
+
+生成的 `.nuspec` 文件包含关键的 `developmentDependency` 标记:
+
+```xml
+true
+```
+
+并且 **没有** 对 `LuYao.ResourcePacker` 的依赖:
+
+```xml
+
+
+
+```
+
+### 2. 包结构确认
+
+```
+LuYao.ResourcePacker.MSBuild.1.0.0.nupkg
+├── README.md
+├── analyzers/
+│ └── dotnet/cs/
+│ └── LuYao.ResourcePacker.SourceGenerator.dll ← 源代码生成器
+├── build/
+│ ├── LuYao.ResourcePacker.MSBuild.props
+│ └── LuYao.ResourcePacker.MSBuild.targets ← MSBuild 集成
+├── tasks/
+│ └── netstandard2.0/
+│ ├── LuYao.ResourcePacker.MSBuild.dll ← MSBuild 任务
+│ └── LuYao.ResourcePacker.dll ← 打包进来供任务使用
+└── LuYao.ResourcePacker.MSBuild.nuspec ← 元数据
+```
+
+**注意**:
+- `LuYao.ResourcePacker.dll` 在 `tasks/` 文件夹中,供 MSBuild 任务内部使用
+- 它 **不在** `lib/` 文件夹中,因此不会作为引用添加到项目中
+- 这正是我们想要的行为!
+
+### 3. 用户安装体验
+
+当用户执行:
+```bash
+dotnet add package LuYao.ResourcePacker.MSBuild
+```
+
+NuGet 将自动生成(感谢 `developmentDependency=true`):
+```xml
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+```
+
+### 4. 运行时库安装
+
+用户需要单独安装运行时库来访问 API:
+```bash
+dotnet add package LuYao.ResourcePacker
+```
+
+生成:
+```xml
+
+```
+
+### 5. 完整示例配置
+
+最终用户的 `.csproj` 文件应包含:
+```xml
+
+
+ net8.0
+
+
+
+
+
+
+
+
+
+
+```
+
+### 6. 测试结果
+
+#### 构建测试
+```
+✅ Build: 0 errors, 26 warnings (all pre-existing)
+✅ All projects compile successfully
+```
+
+#### 单元测试
+```
+✅ Test Results: 33 passed, 0 failed, 0 skipped
+✅ Duration: 77ms
+```
+
+#### 功能测试
+```
+✅ MSBuild task executes correctly
+✅ Resources packed into .dat file
+✅ Source generator creates R class
+✅ Runtime API reads resources
+✅ Example projects work as expected
+```
+
+### 7. 与业界标准对比
+
+此配置使包的行为与以下工具一致:
+- ✅ StyleCop.Analyzers
+- ✅ Roslynator
+- ✅ Microsoft.CodeAnalysis.NetAnalyzers
+- ✅ xunit.analyzers
+- ✅ 所有遵循 NuGet 最佳实践的分析器和 MSBuild 任务包
+
+### 8. 代码审查
+
+```
+✅ Code review feedback addressed
+✅ Documentation improved
+✅ Version numbers use placeholders
+✅ Wording improvements applied
+```
+
+### 9. 安全扫描
+
+```
+✅ No security vulnerabilities detected
+✅ No code changes that require analysis
+```
+
+## 📚 创建的文档
+
+1. **PACKAGE_REFERENCE_EXPLANATION.md** (中文)
+ - 详细解释每个属性的作用
+ - 说明修改的后果和好处
+ - 包含实现细节
+
+2. **VERIFICATION_NOTES.md** (中文)
+ - 验证过程和结果
+ - 迁移指南
+ - 向后兼容性说明
+
+3. **SOLUTION_SUMMARY.md** (中文)
+ - 完整的解决方案总结
+ - 技术实现细节
+ - 用户影响分析
+
+4. **README.md** (英文)
+ - 更新的安装说明
+ - 清晰的包职责说明
+
+## 🎯 目标完成情况
+
+| 需求 | 状态 | 说明 |
+|-----|------|------|
+| 解释修改后代码的作用和后果 | ✅ | PACKAGE_REFERENCE_EXPLANATION.md |
+| 让 NuGet 默认生成修改后的引用代码 | ✅ | 使用 DevelopmentDependency=true |
+| 测试功能正常 | ✅ | 所有测试通过 |
+| 包结构正确 | ✅ | 验证 nuspec 和包内容 |
+| 文档完整 | ✅ | 4 个详细文档 |
+
+## 🚀 下一步
+
+此 PR 已经完成并可以合并。合并后:
+1. 发布新版本的 NuGet 包
+2. 更新发布说明,提醒用户需要单独引用 `LuYao.ResourcePacker`
+3. 用户将自动获得正确的包引用配置
+
+## 📝 注意事项
+
+- 这是一个**破坏性变更**(从 API 角度)
+- 建议作为主版本更新发布(例如从 0.x.x 升级到 1.0.0)
+- 需要在发布说明中明确说明迁移步骤
diff --git a/LOCAL_NUGET_TEST_RESULTS.md b/LOCAL_NUGET_TEST_RESULTS.md
new file mode 100644
index 0000000..b58038c
--- /dev/null
+++ b/LOCAL_NUGET_TEST_RESULTS.md
@@ -0,0 +1,179 @@
+# 本地 NuGet 源测试结果 (Local NuGet Source Test Results)
+
+## 测试环境 (Test Environment)
+
+- 本地 NuGet 源: `/tmp/local-nuget-test`
+- 测试项目: `/tmp/nuget-behavior-test`
+- 包版本: 1.0.0
+
+## 测试场景 (Test Scenarios)
+
+### 场景 1: 安装 MSBuild 包时的行为
+
+**操作:**
+```bash
+dotnet add package LuYao.ResourcePacker.MSBuild --version 1.0.0
+```
+
+**生成的 .csproj 文件:**
+```xml
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+```
+
+**结果:** ✅ 成功
+- `dotnet add package` 命令自动添加了 `PrivateAssets="all"` 和 `IncludeAssets` 属性
+- 这是因为包的 `.nuspec` 文件中包含 `true`
+
+### 场景 2: 安装运行时包时的行为
+
+**操作:**
+```bash
+dotnet add package LuYao.ResourcePacker --version 1.0.0
+```
+
+**生成的 .csproj 文件:**
+```xml
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+```
+
+**结果:** ✅ 成功
+- `LuYao.ResourcePacker` 是普通引用(无特殊属性)
+- `LuYao.ResourcePacker.MSBuild` 保持开发依赖配置
+
+### 场景 3: MSBuild 任务功能测试
+
+**测试项目结构:**
+```
+TestProject/
+├── Resources/
+│ ├── test.txt
+│ └── config.json
+└── Program.cs
+```
+
+**构建结果:**
+```
+✅ 构建成功
+✅ 生成了 TestProject.dat 文件
+✅ MSBuild 任务正常执行
+```
+
+**运行时测试输出:**
+```
+=== Testing LuYao.ResourcePacker ===
+
+Looking for .dat file at: /tmp/nuget-behavior-test/TestProject/bin/Debug/net8.0/TestProject.dat
+File exists: True
+
+Available resources:
+ - config
+ - test
+
+Reading test.txt:
+Hello from test resource!
+
+
+Reading config.json:
+{"message":"JSON test"}
+
+
+✅ All tests passed!
+```
+
+**结果:** ✅ 成功
+- MSBuild 任务成功打包资源
+- 运行时 API 正确读取资源
+- 所有功能正常工作
+
+### 场景 4: 传递依赖测试
+
+**项目结构:**
+```
+LibraryProject (引用了 LuYao.ResourcePacker.MSBuild)
+ ↓ (project reference)
+ConsumerProject (引用了 LibraryProject)
+```
+
+**LibraryProject.csproj:**
+```xml
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+```
+
+**ConsumerProject 构建结果:**
+```
+✅ ConsumerProject 成功构建
+✅ ConsumerProject 输出目录中 **没有** ConsumerProject.dat
+✅ MSBuild 任务 **没有** 在 ConsumerProject 中执行
+✅ 只有 LibraryProject.dat 被复制过来(作为依赖项)
+```
+
+**验证命令:**
+```bash
+$ ls -la ConsumerProject/bin/Debug/net8.0/*.dat
+-rw-rw-r-- 1 runner runner 5 Oct 27 01:55 LibraryProject.dat
+
+$ ls -la ConsumerProject/bin/Debug/net8.0/ConsumerProject.dat
+ls: cannot access 'ConsumerProject.dat': No such file or directory
+```
+
+**结果:** ✅ 成功
+- `PrivateAssets="all"` 成功阻止了包的传递
+- ConsumerProject 没有获得 MSBuild 任务
+- 这是正确的行为:每个需要资源打包的项目都必须显式引用 MSBuild 包
+
+## 总结 (Summary)
+
+### ✅ 验证通过的功能
+
+1. **自动生成正确的包引用**
+ - `dotnet add package` 自动添加 `PrivateAssets="all"` 和 `IncludeAssets` 属性
+
+2. **MSBuild 任务正常工作**
+ - 资源文件成功打包为 .dat 文件
+ - 构建过程无错误
+
+3. **运行时 API 正常工作**
+ - 可以正确读取打包的资源
+ - 所有 API 功能正常
+
+4. **依赖不传递**
+ - `PrivateAssets="all"` 成功阻止传递
+ - 下游项目不会自动获得 MSBuild 包
+
+### 🎯 符合预期的行为
+
+| 场景 | 预期行为 | 实际行为 | 状态 |
+|-----|---------|---------|------|
+| 安装 MSBuild 包 | 自动添加 PrivateAssets 等属性 | ✅ 自动添加 | ✅ |
+| MSBuild 任务执行 | 生成 .dat 文件 | ✅ 正常生成 | ✅ |
+| 运行时 API | 正确读取资源 | ✅ 正常读取 | ✅ |
+| 依赖传递 | 不传递到下游项目 | ✅ 没有传递 | ✅ |
+| 需要显式引用运行时包 | 用户需单独安装 | ✅ 需单独安装 | ✅ |
+
+## 结论 (Conclusion)
+
+所有测试场景均通过!修改后的配置完全符合预期:
+
+1. ✅ NuGet 自动生成正确的包引用代码
+2. ✅ MSBuild 任务和源代码生成器正常工作
+3. ✅ 运行时 API 功能完整
+4. ✅ 依赖不会传递污染
+5. ✅ 行为与其他开发工具(如 StyleCop.Analyzers)一致
+
+**推荐:** 此更改可以安全地合并到主分支并发布!
diff --git a/LuYao.ResourcePacker.MSBuild/LuYao.ResourcePacker.MSBuild.csproj b/LuYao.ResourcePacker.MSBuild/LuYao.ResourcePacker.MSBuild.csproj
index a533bd3..094bb48 100644
--- a/LuYao.ResourcePacker.MSBuild/LuYao.ResourcePacker.MSBuild.csproj
+++ b/LuYao.ResourcePacker.MSBuild/LuYao.ResourcePacker.MSBuild.csproj
@@ -6,6 +6,9 @@
MSBuild tasks for LuYao.ResourcePacker - enables automatic resource file packaging during build
tasks
false
+
+
+ true
@@ -14,8 +17,8 @@
-
-
+
+
diff --git a/PACKAGE_REFERENCE_EXPLANATION.md b/PACKAGE_REFERENCE_EXPLANATION.md
new file mode 100644
index 0000000..b1dd2e2
--- /dev/null
+++ b/PACKAGE_REFERENCE_EXPLANATION.md
@@ -0,0 +1,86 @@
+# 关于 LuYao.ResourcePacker.MSBuild 包引用配置的说明
+
+## 修改后的引用代码说明
+
+### 原始引用方式
+```xml
+
+```
+
+### 修改后的引用方式
+```xml
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+```
+
+## 各个属性的作用
+
+### 1. `OutputItemType="Analyzer"`
+- **作用**: 将此包标记为分析器类型
+- **效果**: 告诉 MSBuild 此包是开发时工具,不应作为运行时依赖
+
+### 2. `ReferenceOutputAssembly="false"`
+- **作用**: 不将此包的程序集添加到项目引用中
+- **效果**: 编译时不会引用此包的 DLL,避免运行时依赖
+
+### 3. `all`
+- **作用**: 将所有资产标记为私有
+- **效果**:
+ - 此包的所有内容(DLL、内容文件、构建文件等)都不会传递给依赖此项目的其他项目
+ - 防止依赖污染,确保只在当前项目中生效
+
+### 4. `runtime; build; native; contentfiles; analyzers; buildtransitive`
+- **作用**: 指定要包含的资产类型
+- **效果**:
+ - `runtime`: 包含运行时资产(但由于 PrivateAssets=all,不会传递)
+ - `build`: 包含 MSBuild targets 和 props 文件
+ - `native`: 包含本机库
+ - `contentfiles`: 包含内容文件
+ - `analyzers`: 包含 Roslyn 分析器和源代码生成器
+ - `buildtransitive`: 包含传递的构建资产
+
+## 产生的后果
+
+### 优点
+1. **不会传递依赖**:
+ - 当项目 A 引用了 LuYao.ResourcePacker.MSBuild,项目 B 引用项目 A 时,项目 B 不会自动获得 LuYao.ResourcePacker.MSBuild 的引用
+ - 这是正确的行为,因为每个需要打包资源的项目都应该显式引用此包
+
+2. **减少输出污染**:
+ - 构建输出目录中不会包含 MSBuild 任务的 DLL
+ - 发布时不会包含不必要的文件
+
+3. **符合最佳实践**:
+ - 与其他开发时工具(如 StyleCop.Analyzers、Roslynator 等)的使用方式一致
+ - 清晰表明这是一个构建时工具而非运行时库
+
+### 注意事项
+1. **需要显式引用运行时库**:
+ - 由于 LuYao.ResourcePacker.MSBuild 的依赖不再传递,项目需要单独引用 `LuYao.ResourcePacker` 包来获取运行时 API
+ - 这样的配置:
+ ```xml
+
+
+ ```
+
+2. **每个项目需要单独引用**:
+ - 如果多个项目都需要资源打包功能,每个项目都需要显式添加 LuYao.ResourcePacker.MSBuild 引用
+ - 不能依赖传递引用
+
+## 实现方式
+
+为了让 NuGet 自动生成上述引用代码,我们在 `LuYao.ResourcePacker.MSBuild.csproj` 中添加了以下配置:
+
+```xml
+
+ true
+
+```
+
+这个属性告诉 NuGet,此包是一个开发依赖项,在安装时应该自动添加 `PrivateAssets="all"` 和其他相关属性。
+
+## 总结
+
+这个修改将 LuYao.ResourcePacker.MSBuild 从一个"普通的 NuGet 包"转变为"开发时依赖包",使其行为更像 Roslyn 分析器或 MSBuild 任务包。这是更符合此包实际用途的配置方式。
diff --git a/README.md b/README.md
index ada2d56..23c4dab 100644
--- a/README.md
+++ b/README.md
@@ -21,19 +21,22 @@ LuYao.ResourcePacker is a .NET library for packaging and accessing resource file
### Package Manager Console
```
Install-Package LuYao.ResourcePacker.MSBuild
+Install-Package LuYao.ResourcePacker
```
### .NET CLI
```bash
dotnet add package LuYao.ResourcePacker.MSBuild
+dotnet add package LuYao.ResourcePacker
```
### PackageReference
```xml
-
+
+
```
-> **Note**: Installing `LuYao.ResourcePacker.MSBuild` will automatically include the core `LuYao.ResourcePacker` library and the source generator as dependencies.
+> **Note**: `LuYao.ResourcePacker.MSBuild` is a development-only dependency that provides MSBuild tasks and source generators. You need to separately install `LuYao.ResourcePacker` for the runtime API. The MSBuild package will not be transitively included in projects that reference your project.
## Usage
diff --git a/SOLUTION_SUMMARY.md b/SOLUTION_SUMMARY.md
new file mode 100644
index 0000000..86a4070
--- /dev/null
+++ b/SOLUTION_SUMMARY.md
@@ -0,0 +1,143 @@
+# 解决方案总结 (Solution Summary)
+
+## 问题描述 (Problem Description)
+
+客户希望修改 `LuYao.ResourcePacker.MSBuild` 的默认 NuGet 引用代码,从简单的包引用:
+```xml
+
+```
+
+改为包含私有资产和特定包含资产的配置:
+```xml
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+```
+
+## 解决方案 (Solution)
+
+### 技术实现
+
+通过在 `LuYao.ResourcePacker.MSBuild.csproj` 中添加以下配置来实现:
+
+```xml
+
+
+ true
+
+```
+
+同时,将对 `LuYao.ResourcePacker` 的项目引用从 `PrivateAssets="none"` 改为 `PrivateAssets="all"`:
+
+```xml
+
+```
+
+### 工作原理
+
+1. **DevelopmentDependency 属性**
+ - 当设置为 `true` 时,NuGet 会在生成的 `.nuspec` 文件中添加 `true` 元素
+ - 当用户安装包时,NuGet 客户端会自动添加 `PrivateAssets="all"` 和 `IncludeAssets` 属性
+ - 这是 NuGet 官方推荐的方式,用于标记仅开发时使用的包(如分析器、MSBuild 任务等)
+
+2. **PrivateAssets="all" 的影响**
+ - 包的所有资产(DLL、内容文件、构建文件等)都不会传递到依赖此项目的其他项目
+ - 这确保了 MSBuild 任务和源代码生成器只在直接引用的项目中生效
+
+3. **移除传递依赖**
+ - 将 `LuYao.ResourcePacker` 的引用改为私有后,它不再作为依赖项出现在生成的包中
+ - 用户需要显式引用 `LuYao.ResourcePacker` 包来获取运行时 API
+
+## 效果验证 (Verification)
+
+### 生成的 NuGet 包
+
+检查生成的 `.nuspec` 文件确认包含:
+```xml
+true
+```
+
+并且在 `` 部分不包含 `LuYao.ResourcePacker`。
+
+### 用户体验
+
+当用户通过以下命令安装包时:
+```bash
+dotnet add package LuYao.ResourcePacker.MSBuild
+```
+
+NuGet 会自动生成:
+```xml
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+```
+
+某些 NuGet 客户端(如 Visual Studio)可能还会添加:
+- `OutputItemType="Analyzer"`
+- `ReferenceOutputAssembly="false"`
+
+### 所需的额外步骤
+
+用户需要单独安装运行时库:
+```bash
+dotnet add package LuYao.ResourcePacker
+```
+
+## 好处 (Benefits)
+
+1. **符合最佳实践**
+ - 与其他 Roslyn 分析器和 MSBuild 任务包(如 StyleCop.Analyzers)的行为一致
+ - 遵循 NuGet 官方推荐的开发依赖项配置方式
+
+2. **避免依赖污染**
+ - 不会将构建工具传递给下游项目
+ - 减少不必要的依赖项
+
+3. **清晰的职责分离**
+ - `LuYao.ResourcePacker.MSBuild` - 构建时工具(MSBuild 任务 + 源代码生成器)
+ - `LuYao.ResourcePacker` - 运行时库(API)
+
+4. **减少输出大小**
+ - 构建输出和发布包中不包含 MSBuild 任务 DLL
+
+## 向后兼容性 (Backward Compatibility)
+
+### 现有用户的迁移
+
+使用旧版本的用户升级后需要:
+1. 添加显式的 `LuYao.ResourcePacker` 包引用
+2. 重新生成项目
+
+### 迁移示例
+
+升级前的 `.csproj`:
+```xml
+
+```
+
+升级后的 `.csproj`:
+```xml
+
+
+```
+
+## 文档更新 (Documentation Updates)
+
+1. **PACKAGE_REFERENCE_EXPLANATION.md** - 详细的中文解释文档
+2. **VERIFICATION_NOTES.md** - 验证说明和测试结果
+3. **README.md** - 更新的安装说明
+
+## 测试结果 (Test Results)
+
+- ✅ 所有 33 个单元测试通过
+- ✅ 示例项目正常编译和运行
+- ✅ 资源打包功能正常工作
+- ✅ 源代码生成器正常生成 R 类
+- ✅ 运行时 API 正常访问资源
+
+## 结论 (Conclusion)
+
+此解决方案成功实现了客户的需求,通过 NuGet 的官方机制 `DevelopmentDependency` 属性来自动生成正确的包引用配置。这是一个清晰、标准、符合最佳实践的解决方案,并且与现有的开发工具生态系统保持一致。
diff --git a/VERIFICATION_NOTES.md b/VERIFICATION_NOTES.md
new file mode 100644
index 0000000..26de37f
--- /dev/null
+++ b/VERIFICATION_NOTES.md
@@ -0,0 +1,109 @@
+# 验证说明 (Verification Notes)
+
+## 变更内容 (Changes Made)
+
+此次更改将 `LuYao.ResourcePacker.MSBuild` 配置为开发依赖项(Development Dependency),使其在 NuGet 安装时自动添加 `PrivateAssets="all"` 等属性。
+
+## NuGet 包行为验证 (Package Behavior Verification)
+
+### 1. nuspec 文件验证
+
+已验证生成的 nuspec 文件包含正确的元数据:
+```xml
+true
+```
+
+### 2. 包结构验证
+
+生成的 NuGet 包包含以下内容:
+- `tasks/netstandard2.0/` - MSBuild 任务 DLL
+- `analyzers/dotnet/cs/` - 源代码生成器
+- `build/` - MSBuild props 和 targets 文件
+- 无传递依赖 - LuYao.ResourcePacker 不再作为依赖项传递
+
+### 3. 安装后的预期行为
+
+当用户通过以下方式安装包时:
+```bash
+dotnet add package LuYao.ResourcePacker.MSBuild
+```
+
+NuGet 将自动在 .csproj 文件中生成:
+```xml
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+```
+
+**注意**:Visual Studio 或某些 NuGet 客户端可能还会自动添加:
+- `OutputItemType="Analyzer"`
+- `ReferenceOutputAssembly="false"`
+
+### 4. 必需的运行时依赖
+
+由于 MSBuild 包不再传递 LuYao.ResourcePacker 依赖,用户需要显式添加:
+```xml
+
+```
+
+### 5. 功能验证
+
+已验证以下功能正常工作:
+- ✅ MSBuild 任务正常执行
+- ✅ 资源文件正确打包为 .dat 文件
+- ✅ 源代码生成器生成 R 类
+- ✅ 运行时 API 正常访问资源
+- ✅ 所有单元测试通过 (33/33)
+
+## 示例项目测试 (Example Project Testing)
+
+已测试 `examples/ExampleProject`,确认:
+- 项目正常编译
+- 资源打包成功(ExampleProject.dat 已生成)
+- 应用程序正常运行
+- 所有 API 正常工作
+
+## 依赖传递行为 (Transitive Dependency Behavior)
+
+### 场景:项目 A → 项目 B
+
+假设:
+- 项目 A 引用了 LuYao.ResourcePacker.MSBuild
+- 项目 B 引用了项目 A
+
+**结果**:
+- 项目 B **不会**自动获得 LuYao.ResourcePacker.MSBuild 引用
+- 这是正确的行为,因为:
+ 1. MSBuild 任务是开发时工具
+ 2. 每个需要打包资源的项目应该显式引用
+ 3. 避免不必要的依赖传递
+
+## 向后兼容性 (Backward Compatibility)
+
+### 现有用户影响
+
+使用旧版本(< 1.0.0)的用户:
+- 升级后需要显式添加 `LuYao.ResourcePacker` 包引用
+- MSBuild 任务和源代码生成器功能保持不变
+- 运行时 API 保持不变
+
+### 迁移指南
+
+从旧版本迁移:
+1. 升级 LuYao.ResourcePacker.MSBuild 到新版本
+2. 添加显式的 LuYao.ResourcePacker 包引用:
+ ```xml
+
+ ```
+3. 重新生成项目
+
+## 与其他工具的对比 (Comparison with Other Tools)
+
+此配置使 LuYao.ResourcePacker.MSBuild 的行为类似于:
+- ✅ StyleCop.Analyzers
+- ✅ Roslynator
+- ✅ Microsoft.CodeAnalysis.NetAnalyzers
+- ✅ 其他 Roslyn 分析器和 MSBuild 任务包
+
+这是 MSBuild 任务和分析器包的行业最佳实践。