产品包目标 net5.0;net8.0;net10.0,测试项目目标 net8.0;net10.0。net5.0 通过编译验证和 smoke test 保证兼容性。
编译验证
# ① 全部包编译——必须 0 warning 0 errordotnet build --configuration Release
# ② 验证 net5.0 特定编译dotnet build --framework net5.0 --configuration ReleaseDirectory.Build.props 设置 TreatWarningsAsErrors(通过 NuGet 审计 NU1605;NU1901-NU1904 警告提升),编译期就能发现大量兼容性问题。
Smoke Test
scripts/smoke-test.sh 执行隔离安装测试,验证包在不同 TFM 下的安装和基本功能:
# ① 为每个 TFM 创建临时项目并安装包./scripts/smoke-test.sh脚本内部流程:
- 创建临时控制台项目(
dotnet new console) - 指定目标框架(
net5.0/net8.0/net10.0) - 安装包(
dotnet add package Bitzsoft.Integrations.Payment.Alipay) - 编译(
dotnet build) - 确认无错误后清理临时项目
验证脚本
| 脚本 | 用途 |
|---|---|
scripts/check-xml-comments.mjs | XML 注释格式和三行规范 |
scripts/check-tfm-policy.mjs | TFM 策略合规性(例外包记录) |
scripts/vulnerability-audit.mjs | 漏洞审计 |
scripts/smoke-test.sh | 隔离安装 smoke test |
TFM 策略检查
check-tfm-policy.mjs 验证:
- 所有包默认目标
net5.0;net8.0;net10.0 - AI 相关包例外(仅 net8/net10)且有文档记录
Directory.Packages.props中的 net5.0 条件版本正确
net5.0 已知限制
- 测试项目不目标 net5.0(受测试运行时可用性限制)
- net5.0 至少必须通过编译和打包资产验证
CompatibilityArgument等兼容层保证 API 行为一致- 部分 BCL 方法在 net5.0 上走自实现(条件编译)