Skip to content
Bitzsoft.Integrationsbitzsoft.integrations

Guide

多 TFM 兼容性测试

net5.0;net8.0;net10.0 三目标框架的编译验证和 smoke test。

Last updated

产品包目标 net5.0;net8.0;net10.0,测试项目目标 net8.0;net10.0。net5.0 通过编译验证和 smoke test 保证兼容性。

编译验证

Terminal window
# ① 全部包编译——必须 0 warning 0 error
dotnet build --configuration Release
# ② 验证 net5.0 特定编译
dotnet build --framework net5.0 --configuration Release

Directory.Build.props 设置 TreatWarningsAsErrors(通过 NuGet 审计 NU1605;NU1901-NU1904 警告提升),编译期就能发现大量兼容性问题。

Smoke Test

scripts/smoke-test.sh 执行隔离安装测试,验证包在不同 TFM 下的安装和基本功能:

Terminal window
# ① 为每个 TFM 创建临时项目并安装包
./scripts/smoke-test.sh

脚本内部流程:

  1. 创建临时控制台项目(dotnet new console
  2. 指定目标框架(net5.0 / net8.0 / net10.0
  3. 安装包(dotnet add package Bitzsoft.Integrations.Payment.Alipay
  4. 编译(dotnet build
  5. 确认无错误后清理临时项目

验证脚本

脚本用途
scripts/check-xml-comments.mjsXML 注释格式和三行规范
scripts/check-tfm-policy.mjsTFM 策略合规性(例外包记录)
scripts/vulnerability-audit.mjs漏洞审计
scripts/smoke-test.sh隔离安装 smoke test

TFM 策略检查

check-tfm-policy.mjs 验证:

  1. 所有包默认目标 net5.0;net8.0;net10.0
  2. AI 相关包例外(仅 net8/net10)且有文档记录
  3. Directory.Packages.props 中的 net5.0 条件版本正确

net5.0 已知限制

  • 测试项目不目标 net5.0(受测试运行时可用性限制)
  • net5.0 至少必须通过编译和打包资产验证
  • CompatibilityArgument 等兼容层保证 API 行为一致
  • 部分 BCL 方法在 net5.0 上走自实现(条件编译)

相关

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%