SuperAPI AI 工具集

deprecate-integration

编程与开发

查看项目

更新于 10-16 00:31

技能介绍

用途:对已发布的 Aspire 托管集成(示例 Aspire.Hosting.GitHub.Models)执行一致的软弃用,使 API 对使用者发出明确过期警告,包从 aspire add 消失,专属维护自动化被移除,方案仍能干净构建并发布最后一个弃用版本,为后续整体删除铺路。该技能不删除项目、测试、playground 或 polyglot 夹具,删除属于更晚的第二阶段。

主要能力与步骤:

  1. 新增 src/Aspire.Hosting.<Name>/<Name>Deprecation.cs,集中定义一个 internal 常量消息,所有 [Obsolete] 复用并链接跟踪 issue。
  2. 为每个公共类型与扩展方法加 [Obsolete(<Name>Deprecation.Message)];标记外层类型已覆盖其成员,不要重复装饰嵌套类型或成员;不改生成文件,保留已有更具体的 [Obsolete] 消息;不使用 error: true;保留 [AspireExport] / [AspireExportIgnore],因为 ATS 扫描仍识别并生成 @deprecated。
  3. 在 README 顶部加 [!WARNING] 横幅,正文保留。
  4. 删除仅用于维护该集成的自动化与工具:定时 workflow、tools 目录及 .csproj 中相关排除项。
  5. 在 src/Aspire.Cli/NuGet/NuGetPackageCache.cs 的 DeprecatedPackages.s_all 中按字母序加入包 id,默认从 aspire add 过滤;用户可用 aspire config set features.showDeprecatedPackages true 重新显示。不影响 aspire restore。
  6. 构建找出触发 CS0618 的一方使用者(集成测试、playground apphost 的 .csproj),加带注释的作用域 <NoWarn>$(NoWarn);CS0618</NoWarn>,不要全局抑制。
  7. 更新 CLI 弃用过滤测试:NuGetPackageCacheTests.cs 与 PackageChannelTests.cs 中补充新 id 用例。
  8. 保持可打包,不设 IsPackable=false 或 SuppressFinalPackageVersion。
  9. 一般不修改 polyglot 夹具与 ATS 基线,纯加 [Obsolete] 不改变导出面。
  10. 运行 ./build.sh 与两个 dotnet test 命令验证: ./build.sh dotnet test --project tests/Aspire.Hosting.<Name>.Tests/Aspire.Hosting.<Name>.Tests.csproj --no-launch-profile -- --filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true" dotnet test --project tests/Aspire.Cli.Tests/Aspire.Cli.Tests.csproj --no-launch-profile -- --filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true"

适用场景:microsoft/aspire 仓库内已发布托管集成的第一阶段退役。限制:需要先提供跟踪 issue URL 与简短原因,否则不应开始编辑;不要提前删除项目或文件;不改生成代码;不改动其他集成的共享基础设施。第二阶段(整体删除)仅在明确要求时执行,删除项目、测试、playground、polyglot 夹具与解决方案条目,但仍保留 id 于 DeprecatedPackages.s_all,并清理不再需要的 NoWarn CS0618。