docs/P2-optimization-report-2026.md
Developer。.net8.csproj、.net10.csproj 和现有 .sln;没有合并或删除项目。IsTestProject=true,不会进入 SDK NuGet 包或调用方编译图。unit、integration、live、stress runsettings 只有显式传入时生效。PackageReference。.slnx、packages.lock.json、中央包管理或根级分析器配置。因此,安装旧版 SDK 的程序升级当前 NuGet 包后,不需要因本批改动修改调用代码或配置;本批没有可进入发布程序集的生产代码差异。
Microsoft.NET.Test.Sdk 的现代测试工程都具有明确测试项目元数据。tests/unit.runsettings:排除 Integration、Live 和 Stress。tests/integration.runsettings:只运行本地基础设施集成测试。tests/live.runsettings:只运行需要真实微信/支付凭据的测试。tests/stress.runsettings:只运行昂贵的并发与性能压力测试。eng/Tests/OfflineTests.proj 提供跨平台离线入口,并明确排除真实服务和本地中间件依赖。RunStress 才会执行。默认离线集合当前覆盖:
| 模块 | 通过数 |
|---|---|
| Core 安全与 JSON | 8 |
| MP 契约 | 18 |
| WxOpen 契约 | 105 |
| Open 契约 | 27 |
| Work 契约 | 338 |
| TenPayV3 契约与通知 | 137 |
| 合计 | 633 |
eng/Quality/QualityGate.proj:显式执行 net10 聚合构建、最小高价值分析器、离线回归和性能门禁。ValidateFull 在上述检查后继续执行 7 个发布 SDK 程序集的 ApiCompat。benchmarks/Senparc.Weixin.Benchmarks:无第三方依赖,测量日志脱敏分配与并发注册吞吐/分配。本机一次验证快照:
| 场景 | 耗时 | 分配 | 结果 |
|---|---|---|---|
| 日志脱敏,50,000 次 | 2,654.7 ns/op | 1,014.5 B/op | 通过 |
| 并发注册,20,000 次 | 436.0 ns/op | 138.6 B/op | 20,000/20,000 完成 |
这些数值是 macOS arm64 当前运行快照,不是 SDK 的公开性能承诺。
git diff --check:通过。AOT_SMOKE_OK。# 默认离线回归
dotnet msbuild eng/Tests/OfflineTests.proj -t:Run -v:minimal
# 显式压力测试
dotnet msbuild eng/Tests/OfflineTests.proj -t:RunStress -v:minimal
# net10 构建、离线测试和性能门禁
dotnet msbuild eng/Quality/QualityGate.proj -t:Validate -v:minimal
# 再增加已发布 NuGet 公共 API 对比
dotnet msbuild eng/Quality/QualityGate.proj -t:ValidateFull -v:minimal
只有包引用或 SDK 环境变化、或出现资产解析失败时,才传入 -p:QualityRestore=true;默认命令均使用 --no-restore。