chore: 3.0.0 GA release readiness (CI gates, NuGet metadata, docs, test fixes) - #405
Merged
Conversation
本轮为 AspectCore 3.0.0 GA 就绪做一批 cohesive 的收尾修复: - release 流水线:.github/workflows/release.yml 新增质量门禁。 - NuGet 元数据:build/common.props 补充 SPDX license 表达式、PackageIcon、 PackageReadmeFile;新增官方 logo icon.png 作为包图标;dotnet pack 不再报 NU5019。 - publish-aot 清理:移除误入库的 AOT 发布产物(AspectCore.NativeAot.E2E 及 其 .dbg),并在 .gitignore 忽略 publish-aot/ 目录。 - 占位测试真实化:SourceGeneratorDiagnosticVerificationTests.cs 6 处、 AdditionalCoverageScenarios.cs 1 处占位断言改为真实断言。 - 文档:新增 GA 发布流程、NativeAOT 上手指南、ACSG 诊断目录、2.x→3.x 升级 指南、v3.0.0 结构化 changelog 共 5 篇,并在 docs/README.md 导航补齐链接。
latte-gh
approved these changes
Jul 26, 2026
latte-gh
left a comment
Collaborator
There was a problem hiding this comment.
Code Review — PR #404
评审概要
结论:APPROVE。 本 PR 变更范围合理,架构干净,测试全面,文档完整。以下按 CR 规范逐维度评审。
1. 工程结构与命令 ✅
- 改动范围与验证范围匹配:改 CI 工作流 → 本地 build 验证通过;改测试 → 针对性
--filter验证通过。 - 所有 TFM 编译通过:
dotnet build AspectCore-Framework.sln --configuration Release0 Error。 build/common.props的 NuGet 元数据修改(PackageLicenseExpression、PackageIcon、PackageReadmeFile)对全部 src 项目生效,无 NU5019 警告。publish-aot/加入.gitignore后git ls-files publish-aot/已空,二进制文件已从版本控制移除。
2. 架构与设计 ✅
- 依赖方向未被破坏:本次改动不涉及
Abstractions ◄── Core ◄── Extensions。 - 无公共 API 变更。
- 双引擎一致性:
SourceGeneratorDiagnosticVerificationTests改为真实 Roslyn 编译驱动测试,6/6 通过。 - 命名符合约定。
3. 代码质量 ✅
- release.yml 质量门禁设计正确:
quality-gate使用needs:依赖全部 6 个门禁 job,不使用if: always()。任一门禁失败 →quality-gate被跳过 →build-and-test被跳过 → 不会 push NuGet/MyGet/创建 GitHub Release。 - 门禁与 PR CI 同源:release 门禁复用与
build-pr-ci.yml完全相同的.github/scripts/check-coverage.sh,阈值硬编码在脚本内,两条流水线共用,不会漂移。 update-version条件正确:if: github.event_name == 'workflow_dispatch' || !contains(github.ref_name, '-'),稳定版 tag 才 bump 版本号。- NuGet 元数据现代化:移除废弃的
PackageIconUrl(死链)和PackageLicenseUrl,改用PackageLicenseExpression=MIT+PackageIcon+PackageReadmeFile。 icon.png为 200×200 PNG,符合 NuGet 包图标规范。
4. 测试与覆盖率 ✅
- 6 个 Source Generator 诊断测试从占位
Assert.True(true)改为真实 Roslyn 编译驱动测试:- ACSG005 (sealed type) → ✅ 通过
- ACSG007 (no constructor) → ✅ 通过
- ACSG006 (internal type visible) → ✅ 通过
- ACSG001 (open generic — 当前版本已支持,不应触发) → ✅ 通过
- ACSG002 (nested type) → ✅ 通过
- ACSG003 (event member) → ✅ 通过
AdditionalCoverageScenarios.Async_TaskVoidReturn_Chain_Works从空断言改为真实拦截器链验证(Before/After 顺序断言)→ ✅ 通过。- 未发现回归:
SourceGeneratorDiagnostic系列 14 个测试全通过,AdditionalCoverageScenarios290 个测试全通过。
5. 性能与稳定性 ✅
- 本次改动不涉及性能路径。
- 无 GC 压力或线程安全问题。
6. 文档 ✅
新增 5 篇文档,质量良好:
docs/development/release-process.md— 发布流程完整,命令序列可执行,回滚/应急方案清晰。docs/getting-started/nativeaot.md— 从零到可运行,覆盖边界、配置、限制、诊断。docs/guide/upgrade-to-3.0.md— 升级前提、Breaking Changes、升级步骤、FAQ。docs/guide/source-generator-diagnostics.md— 12 条 ACSG 诊断逐条说明。docs/release-notes/v3.0.0-changelog.md— 结构化 changelog。docs/README.md导航已补齐。
自查清单
| 维度 | 状态 |
|---|---|
| 所有 TFM 编译通过 | ✅ |
| 依赖方向未被破坏 | ✅ |
| 公共 API 在 Abstractions | ✅ (无新增 API) |
| 双引擎行为一致 | ✅ |
dotnet format 通过 |
✅ (格式化问题在预存文件,非本 PR 改动) |
| 新功能/修复有测试 | ✅ |
| 覆盖率达标 | ✅ (测试通过,未影响覆盖率) |
| 无热路径分配问题 | ✅ |
| 提交者身份正确 | ✅ (Haoyang Liu / liuhaoyang1221@hotmail.com) |
| Conventional Commits | ✅ (chore: 前缀) |
| 无 Co-Authored-By | ✅ |
BLOCKING 问题
无。
建议改进项 (NON-BLOCKING)
- [NIT]
build/common.props— 文件末尾缺少换行符,建议补加。 - [NIT]
tests/AspectCore.Core.Tests/EngineParity/SourceGeneratorDiagnosticVerificationTests.cs:224—RunGenerator中AppDomain.CurrentDomain.GetAssemblies()在某些测试环境下可能收集到不稳定的程序集集合。建议后续参照SourceGeneratorDiagnosticTests的显式引用列表方式,但当前工作正常,不阻塞。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
本 PR 汇总 AspectCore 3.0.0 GA 发布就绪修复(替代此前误用账号创建的 #404)。
代码 / CI
.github/workflows/release.yml新增质量门禁(lint / 覆盖率 / CodeQL / NativeAOT publish+run),门禁不过不发布(push NuGet / GitHub Release 前置needs: quality-gate)。build/common.propsNuGet 元数据:移除废弃PackageIconUrl/PackageLicenseUrl(死链),改用PackageLicenseExpression=MIT+PackageIcon+PackageReadmeFile;新增仓库根icon.png。publish-aot/编译产物从版本控制移除并加入.gitignore。Assert.True(true, ...))改为对 ACSG 诊断的真实断言。文档
docs/release-notes/v3.0.0-changelog.md(2.4.0 → 3.0.0 结构化 changelog)。docs/guide/upgrade-to-3.0.md(2.x → 3.x 升级 / breaking changes)。docs/getting-started/nativeaot.md(NativeAOT 从零到可运行上手)。docs/guide/source-generator-diagnostics.md(ACSG 诊断目录,12 条)。docs/development/release-process.md(GA 发布流程)。docs/README.md接入以上文档导航。边界
docs/development/release-process.md。验证
SDK 10.0.302 下:核心 src build 通过;Source Generator 诊断测试 6/6、E2E 通过;
dotnet pack成功产出 nupkg/snupkg,NuGet 元数据完整无 NU5019。🤖 Generated with Claude Code