用途:把受支持的旧版 .NET 项目资源迁移到实验性 DotnetProjectResource 模型,适用于面向 Aspire 13.6 或更新版本的 AppHost。请求“迁移到 Project v2”只授权评估,不授权直接修改;需先给出逐资源、逐文件计划并获批准,且只应用明确批准的子集。
主要能力:识别唯一 AppHost 并保留无关本地改动;从项目文件、中央包管理、文件指令或已解析的多语言配置中确定实际 Aspire SDK/托管版本,版本低于 13.6、无法解析或冲突时停止且不编辑;核对已安装/解析包是否暴露 AddDotnetProject、发布、EF、Blazor 等所需 API;盘点 AddProject<Projects.T>、路径/目录 AddProject、AddCSharpApp 及多语言等价写法,以及名称、路径、选项、参数、环境回调、端点、启动设置、引用、等待、健康检查、副本、构建/发布配置和部署注解。
使用方式:先只读盘点,不还原、构建、运行或重新生成 SDK 文件;用 aspire docs search 和 aspire docs api search ... --language csharp|typescript 确认 API 形态。TypeScript 需使用已解析生成的 addDotnetProject(name, path, options?: DotnetProjectOptions) 扁平 DTO。批准后加载 migration-patterns.md,按语言映射添加 Aspire.Hosting.Dotnet,保留中央包管理和仓库约定;C# 需在批准的 Project v2 声明周围成对使用 #pragma warning disable/restore ASPIREDOTNETPROJECT001,EF 重载还需成对 ASPIREPROJECTS001 抑制。保守清理仅专属于已迁移资源的 ProjectReference 或 #:project。验证时按仓库约定还原/构建,必要时用 aspire start --non-interactive --isolated --apphost <path>,并用 aspire wait <resource> --apphost <path> --non-interactive 和结构化检查,区分编译、本地运行、发布产物与镜像构建证据。
限制:不自动替换 Azure Functions 或未知专用 ProjectResource 子类型、F#/VB 服务、直接 new ProjectResource(...)、自定义发布器/镜像管理器/强制转换/泛型约束/GetProjectResources() 消费者,以及文件应用仅构建环境或 EF CLI 操作。文件型 .cs 候选需 .NET 10+,不支持 WithBuildEnvironment 或 EF CLI,保留 Native AOT,除非另行批准。不得手工编辑生成的 .aspire/modules/ 文件,不得隐式升级 Aspire,不得推送镜像或部署。若存在 .agents/skills/aspire-project-v2-migration/SKILL.md,应警告并遵从项目本地技能,同时保留安全门。