什么是GitHub Copilot升级?

GitHub Copilot升级是一个GitHub Copilot代理,可帮助你快速自信地将项目升级到较新版本的.NET。 它指导你完成跨Visual Studio、Visual Studio Code、GitHub Copilot CLI 和 GitHub.com 的评估、解决方案建议、代码修复和验证。

使用此代理可以:

  • 升级到较新版本的 .NET。
  • 使 .NET 应用现代化,尤其是在从 .NET Framework 升级时。
  • 评估应用程序的代码、配置和依赖项。
  • 验证您的应用程序是否已成功构建并通过测试。

应用场景

代理提供了多个称为 方案 的端到端现代化工作流。 每个方案都是一个托管工作流,指导你完成特定类型的升级或迁移:

情景 说明 示例提示
.NET 版本升级 从较旧的.NET版本升级到 .NET 8、9、10 或更高版本。 “将解决方案升级到 .NET 10”
SDK 样式转换 将旧项目格式转换为 SDK 样式。 “转换为 SDK 样式”
Newtonsoft.Json 升级 将 Newtonsoft.Json 替换为 System.Text.Json。 “从 Newtonsoft.Json 升级”
SqlClient 升级 从 System.Data.SqlClient 升级到 Microsoft。Data.SqlClient。 “更新 SqlClient”
Azure Functions升级 将Azure Functions从进程内升级到隔离工作者模型。 “升级我的Azure Functions”
从语义内核到代理 将语义内核代理升级为Microsoft Agent Framework。 “升级我的 SK 代理”
Aspire 集成 添加Aspire对内部循环和Azure部署的支持。 “将 Aspire 添加到我的应用”
Aspire 版本升级 将现有 Aspire 应用程序升级到较新版本。 “升级我的 Aspire 版本”
WebForms-to-Blazor 升级 将 ASP.NET Web Forms应用程序升级到 Blazor。 “将我的 Web Forms 应用迁移到 Blazor”

有关所有方案和 30 多种内置升级技能的完整参考,请参阅 方案和技能参考

提供反馈

Microsoft 重视您的反馈,并利用它来改进其智能助手。 使用以下任一选项留下反馈:

先决条件

在使用代理之前,请在开发环境中设置GitHub Copilot升级。 有关安装步骤,请参阅安装GitHub Copilot升级

升级 .NET 项目

升级代理支持升级以下类型的 C# 和Visual Basic项目:

  • ASP.NET Core(MVC、Razor Pages 和 Web API 等相关技术)
  • ASP.NET Web Forms
  • Blazor
  • Azure Functions
  • Windows Presentation Foundation(WPF)
  • Windows 窗体
  • WinUI
  • .NET MAUI和Xamarin
  • 类库
  • 控制台应用
  • 测试项目(MSTest、NUnit 和 xUnit)

若要开始升级,请参阅升级具有GitHub Copilot升级.NET应用

支持的升级途径

代理支持以下升级路径:

Source 目标
.NET框架(任何版本) .NET 8 或更高版本
.NET框架(任何版本) .NET 框架 4.8.1
.NET Core 1.x–3.x .NET 8 或更高版本
.NET 5 或更高版本 .NET 8 或更高版本

将 .NET 项目迁移到 Azure

若要将.NET应用程序迁移到Azure,请使用GitHub Copilot现代化代理。 现代化代理处理特定于Azure的方案,例如数据库迁移、存储、标识、消息传送和部署。

使用仪表板监视升级

升级仪表板在 GitHub Copilot CLI 和 GitHub Copilot 应用中提供升级会话的可视视图。 使用其面板跟踪总体进度、方案、任务、项目、依赖项、评估结果、升级选项和代理活动。

若要打开仪表板,请要求Copilot在升级会话期间显示它。 仪表板当前在 Visual Studio、Visual Studio Code 或其他 IDE 中不可用。 有关每个面板的详细信息,请参阅 使用升级仪表板监视升级

工作原理

若要启动升级或迁移过程,请参阅:

  1. 使用以下方法之一启动代理:

    • Visual Studio:右键单击 解决方案资源管理器1 中的解决方案或项目,然后选择 Modernize。 或者,打开 GitHub Copilot 对话助手 窗口并键入@Modernize
    • Visual Studio Code:打开 GitHub Copilot 对话助手 面板并键入 @upgrade
    • GitHub Copilot CLI:键入 @upgrade,然后输入您的升级或迁移请求。
    • GitHub Copilot 应用:在代理选取器中,选择Upgrade
  2. 告知代理要升级或迁移的内容。

当要求升级代理升级应用时,Copilot在 Git 存储库中工作时,会首先提示你创建新分支。 然后Copilot评估项目并运行三阶段工作流。 每个阶段都会在 .github/upgrades/{scenarioId} 存储库中生成 Markdown 文件,这样您可以在继续之前查看接下来的内容。 如果.github/upgrades/{scenarioId}已存在于之前的尝试中,Copilot 会询问您是继续还是重新开始。

Copilot首先检查项目结构、依赖项和代码模式,以生成全面的评估。 该文件 assessment.md 列出了中断性变更、API 兼容性问题、已弃用的模式和升级范围。

在评估之后,Copilot会运行以下三个阶段:

  1. Assessment: Copilot会检查您的项目结构、依赖项和代码模式,然后提出供您审查的策略决策,例如升级策略(从下到上、从上到下或一次性)、项目升级方法、技术现代化选项和兼容性管理。 Copilot将确认的决定保存到 upgrade-options.md

  2. Planning: Copilot将评估和确认的选项转换为详细说明。 文件 plan.md 记录升级策略、重构方法、依赖项路径和风险缓解措施。

  3. Execution: Copilot将计划分解为具有tasks.md验证条件的顺序具体任务。 每个任务描述了单个更改,以及Copilot如何确认它成功。

编辑任何 Markdown 文件 .github/upgrades/{scenarioId} 以调整升级步骤或添加上下文,然后再继续。

升级策略

在评估阶段,代理会评估解决方案,并建议以下策略之一:

战略 最适用于 说明
自下而上 具有深度依赖项关系图的大型解决方案 首先升级叶项目,然后逐步往上推进。
从上到下 主要应用的快速意见反馈 首先升级应用程序项目,然后修复依赖项。
全部一次 小型简单解决方案 一次升级所有项目。

流模式

代理支持两种流程模式,用于控制暂停以接收输入的时间长度:

  • 自动: 代理在所有阶段都工作,无需暂停,仅在真正的阻止器处停止。 最适合有经验的用户和简单升级。
  • 引导:智能体在每个阶段边界都会暂停,以便可以在继续之前先查看评估、计划和任务。 最适合第一次用户和复杂的解决方案。

随时切换模式,方法是说 “暂停” (进入引导模式)或 “继续” (进入自动模式)。

状态管理

代理将所有升级状态存储在.github/upgrades/{scenarioId}/中。 文件夹包含:

文件 Purpose
assessment.md 解决方案分析
upgrade-options.md 确认的升级决策
plan.md 有序任务计划
tasks.md 实时进度仪表板
scenario-instructions.md 代理的持久性内存,包括首选项、决策和自定义说明
tasks/{taskId}/task.md 每个任务的范围和上下文
tasks/{taskId}/progress-details.md 按任务执行说明和结果

由于所有状态都位于此文件夹中,因此可以关闭 IDE、在会话之间切换,甚至可以在开发环境之间切换(例如,在 VS Code 中启动并继续Visual Studio)。 代理从中断处继续。

Tip

.github/upgrades/ 文件夹提交到分支。 提交的状态充当备份,并允许团队成员查看升级进度。

执行升级

每个阶段完成后,根据需要查看和修改生成的文件,然后告知Copilot继续下一阶段。

到达 Execution 阶段时,请告知Copilot开始升级。 如果 Copilot 遇到问题,它会尝试识别原因并应用修补程序。 如果 Copilot 无法纠正该问题,它会请求你的帮助。 进行干预时,Copilot从所做的更改中吸取教训,并在问题再次出现时尝试自动应用这些更改。

升级后的结果

当 Copilot 运行每个任务时,它会更新 tasks.md 中的 .github/upgrades/{scenarioId} 文件,记录每个步骤的状态。 通过查看此文件来监视进度。 Copilot 会为流程的每个部分创建 Git 提交,以便可以回滚更改或查看更改内容。

升级完成后,Copilot聊天响应中显示后续步骤。

Telemetry

该工具收集有关项目类型、升级意向和升级持续时间的数据。 开发环境收集和聚合数据,不包含任何用户身份信息。 有关Microsoft隐私策略的详细信息,请参阅 Visual Studio 客户体验改善计划