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以实现高可用性、可伸缩性和企业级安全性。
工作原理
若要启动升级或迁移过程,请参阅:
在开发环境中打开.NET项目或解决方案。
使用以下方法之一启动代理:
Visual Studio :右键单击解决方案资源管理器1 中的解决方案或项目,然后选择 Modernize 。 或者,打开 GitHub Copilot 对话助手 窗口,然后键入@Modernize。-
Visual Studio Code:打开 GitHub Copilot 对话助手 面板并键入
@modernize-dotnet。 -
GitHub Copilot CLI:键入
@modernize-dotnet并随后输入升级或迁移请求。 -
GitHub.com:在存储库中使用
modernize-dotnet编码代理。
告知代理要升级或迁移的内容。
当您请求现代化代理升级您的应用程序时,Copilot 会先提示您在 Git 存储库中创建新分支(如果您在其中工作)。 然后Copilot评估项目并运行三阶段工作流。 每个阶段都会在 .github/upgrades/{scenarioId} 存储库中生成 Markdown 文件,这样您可以在继续之前查看接下来的内容。
.github/upgrades/{scenarioId}是否已经存在于之前的尝试?如果是这样,Copilot会询问您是要继续还是重新开始。
Copilot首先检查项目结构、依赖项和代码模式,以生成全面的评估。 该文件 assessment.md 列出了中断性变更、API 兼容性问题、已弃用的模式和升级范围。
在评估之后,Copilot会运行以下三个阶段:
Assessment: Copilot会检查您的项目结构、依赖项和代码模式,然后提出供您审查的策略决策,例如升级策略(从下到上、从上到下或一次性)、项目升级方法、技术现代化选项和兼容性管理。 Copilot将确认的决定保存到
upgrade-options.md。Planning: Copilot将评估和确认的选项转换为详细说明。 文件
plan.md记录升级策略、重构方法、依赖项路径和风险缓解措施。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 客户体验改善计划。