通过


什么是 GitHub Copilot 的现代化?

GitHub Copilot现代化是一款GitHub Copilot助手,可帮助用户快速而自信地将项目升级到较新版本的.NET,以及将.NET应用程序迁移到Azure。 它指导你完成跨Visual Studio、Visual Studio Code、GitHub Copilot CLI 和 GitHub.com 的评估、解决方案建议、代码修复和验证。

使用此代理可以:

  • 升级到较新版本的 .NET。
  • 迁移技术和部署到Azure。
  • 使你的 .NET 应用程序现代化,尤其是在从 .NET Framework 中升级时。
  • 评估应用程序的代码、配置和依赖项。
  • 规划和配置合适的Azure资源。
  • 修复问题并应用云迁移的最佳做法。
  • 验证您的应用程序是否已成功构建并通过测试。

场景

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

情景 说明 示例提示
.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 代理”

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

提供反馈

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

先决条件

在使用代理之前,请先在开发环境中设置 GitHub Copilot 的现代化功能。 有关安装步骤,请参阅 Install GitHub Copilot modernization

升级.NET项目

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

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

若要开始升级,请参阅 使用 GitHub Copilot 进行 .NET 应用现代化升级

支持的升级途径

代理支持以下升级路径:

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

将.NET项目迁移到Azure

现代化代理通过自动化分析、AI 驱动的代码修正、生成和漏洞检查以及部署自动化简化了Azure迁移:

  • 分析和智能建议。

    评估应用程序的Azure迁移准备情况,并根据应用程序的依赖项和已发现的问题获得定制指导。

  • AI驱动的代码修复。

    应用预定义的最佳做法代码模式,以尽量减少手动工作量加速现代化。

  • 自动构建和 CVE 解决。

    生成应用并解决编译错误和漏洞,简化开发。

  • 无缝部署。

    部署到 Azure,使代码从开发到生产更快。

预定义的迁移任务

GitHub Copilot为.NET提供的现代化方案包括预定义任务,旨在捕获行业的最佳实践并涵盖常见的迁移场景。

  • 迁移到 Azure 上基于托管标识的数据库,包括 Azure SQL DB、Azure SQL MI 和 Azure PostgreSQL

    通过从本地或旧数据库(如 DB2、Oracle DB 或 SQL Server)迁移到 Azure SQL DB、Azure SQL 托管实例 或 Azure PostgreSQL,实现数据层现代化。 使用安全托管标识身份验证。

  • 迁移到 Azure 文件存储

    将文件 I/O 操作从本地文件系统移动到Azure文件存储,以便进行可缩放的基于云的文件管理。

  • 迁移到 Azure Blob 存储

    将本地或跨云的对象存储或本地文件系统的文件 I/O 替换为用于非结构化数据的 Azure Blob 存储。

  • 迁移到 Microsoft Entra ID

    将身份验证和授权从Windows Active Directory转换到Microsoft Entra ID(以前Azure AD),以便进行新式标识管理。

  • 通过使用托管标识和 Azure 密钥保管库 迁移到安全的凭据

    将配置或代码中的纯文本凭据替换为安全的托管标识,并使用 Azure 密钥保管库 进行机密管理。

  • 迁移到 Azure 服务总线

    从旧消息队列或第三方消息队列(如 MSMQ 或 RabbitMQ)或 Amazon SQS(AWS 简单队列服务)移动到Azure 服务总线,以实现可靠的基于云的消息传送。

  • 迁移到 Azure 通信服务电子邮件

    将直接 SMTP 电子邮件发送替换为 Azure 通信服务,实现可扩展、安全的电子邮件传递。

  • 迁移到 Confluent Cloud/Azure 事件中心,用于 Apache Kafka

    从本地或本地部署的 Kafka 过渡到使用 Confluent Cloud 或 Azure 事件中心 的托管事件流处理。

  • 在 Azure 上迁移到 OpenTelemetry

    从 log4net、Serilog 和 Windows 事件日志等本地日志记录框架转换到 Azure 上的 OpenTelemetry。

  • 使用托管标识迁移到 Azure Cache for Redis

    将内存中或本地 Redis 缓存实现替换为Azure Cache for Redis以实现高可用性、可伸缩性和企业级安全性。

工作原理

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

  1. 在开发环境中打开.NET项目或解决方案。

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

    • Visual Studio:右键单击 解决方案资源管理器1 中的解决方案或项目,然后选择 Modernize。 或者,打开 GitHub Copilot 对话助手 窗口,然后键入 @Modernize
    • Visual Studio Code:打开 GitHub Copilot 对话助手 面板并键入 @modernize-dotnet
    • GitHub Copilot CLI:键入 @modernize-dotnet 并随后输入升级或迁移请求。
    • GitHub.com:在存储库中使用 modernize-dotnet 编码代理。
  3. 告知代理要升级或迁移的内容。

当您请求现代化代理升级您的应用程序时,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}/中。 文件夹包含:

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

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

小窍门

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

执行升级

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

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

升级结果

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

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

遥测

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