作者:Matt Soucoup,Pablo Lopes

排版:Alan Wang

今天,我将使用 Visual Studio 内置的 GitHub Copilot 现代化工具,将一个 .NET Framework 应用现代化到 .NET 10。

这套工具可以帮助我们升级运行在旧版 .NET 上的应用,也可以进一步将应用迁移到 Azure。今天,我们主要关注其中的升级部分。

而且,整个过程基本上都由工具帮我们完成!不过,它并不会一次性把所有事情全部做完,这其实是件好事。它会在 .NET 升级过程中设置多个检查点,告诉我们当前进行了哪些操作,我们也可以在这些节点对过程进行引导,使其朝着我们希望的结果推进。同时,在每个检查点,它都会生成一个 Markdown 文件,我们可以将这些文件提交到源代码管理系统中。换句话说,这些文件记录了升级过程中产生了什么结果,以及我们向升级流程输入了什么内容。

我们要现代化的应用

BookCatalog 是一个简单的 .NET Framework 数据管理应用。你可以使用它查看图书列表、添加图书、编辑图书以及删除图书。

在这里插入图片描述

第 1 步:打开示例项目

首先,克隆代码仓库,然后打开 shared-legacy-app/ 目录下的 BookCatalog.sln

  1. 克隆代码仓库:git clone ``https://github.com/microsoft/dotnet-modernization-for-beginners.git

  2. 在克隆下来的 shared-legacy-app 文件夹中,使用 Visual Studio 2022 或更高版本打开 BookCatalog.sln

第 2 步:开始现代化

在 Visual Studio 中,右键点击项目或解决方案,然后选择 Modernize。你也可以直接在 Visual Studio 中使用 @Modernize 来启动。

在这里插入图片描述

这会打开 GitHub Copilot 聊天窗口,并加载一个经过定制的现代化 Agent / 体验。这个 Agent 专门针对应用现代化流程进行了优化,可以帮助我们一步步完成应用的现代化。

在这里插入图片描述

它会提供几个示例提示词,你也可以直接使用自然语言告诉它想做什么。

不过今天,我们直接选择顶部推荐的提示:Upgrade to a newer version of .NET

接下来,Agent 会询问两个问题。第一个问题是:你希望升级到哪个目标框架?这里选择:.NET 10

在这里插入图片描述

然后是选择流程模式。还记得前面提到的检查点吗?现代化过程会在执行过程中停下来,让我们检查当前的工作——但只有选择 Guided 模式时才会这样。所以这里选择 Guided

在这里插入图片描述

Guided 模式的作用,就是让 Agent 在执行过程中暂停,并允许你检查它完成的工作。首先,Agent 会对我们的项目进行评估,并生成一份报告。在 Guided 模式下,我们可以查看这份报告,也可以根据需要对报告进行修改。而且,我们还可以将这份报告提交到源代码管理系统中。(看起来不错——拿给老板看看,你会显得超级高效!😉)

接下来,Agent 会创建一份计划,用于解决发现的问题并执行升级。如果需要,我们同样可以在 Guided 模式下查看和修改这份计划。随后,Guided 模式还会以一步一步的方式展示整个升级执行过程。你大概已经明白它的工作方式了。

第 3 步:查看评估结果

首先执行的是评估。评估阶段会在真正开始升级之前,将发现的问题区分为阻塞项、警告和信息项。

在这里插入图片描述

这份评估可以帮助你了解,在开始升级之前,哪些问题必须优先处理。在这个示例中,现代化工作主要包括:

  • 将基于 System.Web.Mvc 的模式迁移到对应的 ASP.NET** Core** 实现;

  • 将数据访问层从 Entity Framework 6 迁移到 EF Core

确认评估结果之后,就可以继续下一步。

在这里插入图片描述

第 4 步:查看升级计划

批准评估结果后,Agent 会开始制定具体的升级计划,并向我们提供一些执行选项。

在这里插入图片描述

我们可以修改 Agent 创建升级计划时所使用的选项,不过这里我们直接采用默认设置。

在这里插入图片描述

随后,Agent 会生成升级计划。建议认真阅读这份计划,因为它将成为 Agent 后续升级应用的基础。换句话说,这份计划实际上告诉我们:Agent 准备如何完成整个应用升级。

在这里插入图片描述

第 5 步:开始升级!

批准升级计划后,Agent 就会开始逐项执行任务。

在这里插入图片描述

在 Guided 模式下,每完成一个任务,Agent 都会暂停下来,让你检查它的工作。确认无误后,再继续执行下一项任务。

在这里插入图片描述

五个任务之后,升级就完成了!

在这里插入图片描述

验证升级结果

在这里插入图片描述

接下来按 F5 运行应用,应用应该就可以正常启动了。当然,这次升级工作是由 AI 完成的,而且它第一次执行时不一定能够一次成功。毕竟,使用 AI 时,你很难保证每一次都会得到完全相同的结果。如果遇到问题,可以使用 Visual Studio 中 GitHub Copilot 提供的调试功能,通常可以很快帮助你解决问题,让应用重新运行起来。

而当应用最终启动之后……你会发现它看起来和以前一模一样!这是因为现代化 Agent 并不会替你升级用户体验(UX)。至于 UI/UX 的改造,就交给你自己去发挥吧。

总结

现在,我们已经成功将这个应用升级到了 .NET 10。如果你愿意,还可以继续使用 GitHub Copilot .NET 现代化工具,将这个应用进一步迁移到 Azure。

我们还创建了一门课程:面向初学者的 .NET 现代化指南。课程会更加深入地介绍应用的升级和迁移流程。欢迎前往了解。当然,也欢迎在这篇文章下留言,告诉我们你的使用体验。

查看 面向初学者的 .NET 现代化指南课程!

Logo

微软开发者社区,邀请来自微软以及技术社区专家,带来最前沿的技术干货与实践经验。在这里,您将看到深度教程、最佳实践和创新解决方案。

更多推荐