什么是 GitHub Copilot 应用现代化?

GitHub Copilot 应用现代化是一个 GitHub Copilot 代理,可帮助你将项目升级到较新版本的 .NET,并快速自信地将 .NET 应用程序迁移到 Azure。 它指导你完成评估、解决方案建议、代码修复和验证(全部在 Visual Studio 中)。

此过程简化了现代化,提高了开发人员的工作效率和信心。 GitHub Copilot 应用现代化是一体式升级和迁移代理,它使用 AI 来提高开发人员的速度、质量和结果。

使用此代理,可以:

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

提供反馈

反馈对于Microsoft和此代理的效率非常重要。 使用 “建议功能 ”和 “报告 Visual Studio 的问题”功能来提供反馈。

先决条件

在使用 GitHub Copilot 应用现代化之前,需要以下项:

升级 .NET 项目

现代化代理支持升级用 C# 编码的项目。 代理支持以下项目类型:

  • ASP.NET 核心(以及 MVC、Razor 页面和 Web API 等相关技术)
  • Blazor
  • Azure Functions
  • Windows Presentation Foundation
  • Windows 窗体
  • 类库
  • 控制台应用

若要了解如何开始升级,请参阅 如何使用 GitHub Copilot 应用现代化升级 .NET 应用

升级路径

代理支持以下升级路径:

  • 将项目从旧版 .NET 升级到最新版本。
  • 将 .NET Framework 项目升级到 .NET。
  • 使用新功能实现代码库的现代化。
  • 将组件和服务迁移到 Azure。

将 .NET 项目迁移到 Azure

现代化代理结合了自动化分析、AI 驱动的代码修正、生成和漏洞检查以及部署自动化,以简化到 Azure 的迁移。 代理会评估就绪情况、应用修补程序,并通过这些功能简化迁移过程:

  • 分析和智能建议。

    评估应用程序的 Azure 迁移准备情况,并根据应用程序的依赖项和已确定的问题接收定制指南。

  • AI驱动的代码改进。

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

  • 自动构建和 CVE 解析。

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

  • 无缝部署。

    毫不费力地部署到 Azure,使代码从开发到云的速度比以往更快。

预定义的迁移任务

预定义的任务捕获使用 Azure 服务的行业最佳做法。 目前,适用于 .NET 的 GitHub Copilot 应用现代化提供了涵盖常见迁移方案的预定义任务。

  • 迁移到 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 Key Vault,转移到安全的凭据

    将配置或代码中的纯文本凭据替换为安全的托管身份,并使用 Azure Key Vault 进行密钥管理。

  • 迁移到 Azure 服务总线

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

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

    将直接 SMTP 电子邮件替换为 Azure 通信服务,实现可缩放的安全电子邮件传递。

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

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

  • 迁移到 Azure 上的 OpenTelemetry

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

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

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

工作原理

若要启动升级或迁移,请执行以下步骤与 GitHub Copilot 交互:

  1. 在 Visual Studio 中打开 .NET 项目或解决方案。

  2. 使用以下方法之一访问 GitHub Copilot 应用现代化代理:

    右键单击 解决方案资源管理器 中的解决方案或项目,然后选择 “现代化”。

    —或—

    打开 GitHub Copilot 聊天 窗口,然后键入 @modernize 升级或迁移请求。

  3. 请向代理告知您要升级或迁移的内容。

当要求新式化代理升级应用时,如果使用的是 Git 存储库,Copilot 会首先提示你创建新分支。 然后,Copilot 运行三阶段工作流。 每个阶段都会在您的存储库的.github/upgrades下写入一个 Markdown 文件,方便您在继续之前查看下一步骤。 如果 .github/upgrades 是之前尝试中已存在的,Copilot 会询问是继续还是重新开始。

  • 评估阶段 (assessment.md
    Copilot 检查项目结构、依赖项和代码模式,以生成全面的评估。 本文档列出了中断性变更、API 兼容性问题、弃用的模式和升级范围,以便确切地了解需要注意的内容。

  • 规划阶段 (plan.md
    Copilot 将评估转换为详细规范,该规范说明了如何解决每个问题。 该计划记录了升级策略、重构方法、依赖项升级路径和风险缓解措施。

  • 执行阶段 (tasks.md
    Copilot 将计划分解为具有验证条件的有序具体任务。 每个任务描述单个更改,以及 Copilot 如何确认成功。

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

执行升级

随着每个阶段的准备,请告诉科皮洛特继续进入下一阶段,让你有时间研究和修改(如有必要)阶段已经安排的任何任务。

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

升级后的结果

当 Copilot 运行每个任务时,它会将每个步骤的状态更新到 tasks.md 中的 .github/upgrades 文件。 通过查看此文件来监视进度。 该工具会为该过程的每个部分创建 Git 提交,以便可以轻松回滚更改或获取有关更改的详细信息。

升级完成后,Copilot 会在聊天的回复中显示下一步,以指导您在升级过程完成后要执行的操作。

遥测

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