.NET的GitHub Copilot现代化有助于通过
- Scenarios是用于主要升级目标的端到端托管工作流,例如从 .NET Framework 升级到 .NET 10。 方案协调整个生命周期:评估、规划和按任务执行。
- 技能 是特定升级任务的重点功能,例如将 EF6 转换为 EF Core 或将 WCF 替换为 CoreWCF。 当代理在升级过程中遇到相关代码时,技能会自动激活。
代理支持 C# 和Visual Basic项目。
小窍门
无需记住名称。 描述所需内容(“升级到 .NET 10”,“升级我的 EF6 代码”,“替换 Newtonsoft.Json”),代理会自动加载正确的方案和技能。 你还可以问: “你能帮我什么?
场景
方案是代理的顶级升级工作流。 启动对话时,代理会确定目标的最佳方案,并逐步引导你完成该方案。
| 情景 | 它的作用是什么 | 示例提示 |
|---|---|---|
| .NET版本升级 | 将项目从任何较旧的.NET版本升级到 .NET 8 或更高版本。 | “将解决方案升级到 .NET 10” |
| SDK 样式转换 | 将旧项目文件转换为新式 SDK 样式的格式。 | “将项目转换为 SDK 样式” |
| Newtonsoft.Json 升级 | 将 Newtonsoft.Json 替换为跨解决方案的 System.Text.Json。 | “从 Newtonsoft.Json 升级” |
| SqlClient 升级 | 将 System.Data.SqlClient 升级到 Microsoft。Data.SqlClient。 | “将 SqlClient 更新为新式包” |
| Azure Functions upgrade | 将Azure Functions从进程内升级到独立辅助角色模型。 | “升级Azure Functions” |
| 语义内核代理 | 从 SK 代理升级到 Microsoft Agent Framework。 | “升级我的 SK 代理” |
有关端到端演练,请参阅 核心概念。
.NET版本升级
最常见的方案。 将项目从任何较旧的.NET变体升级到最新版本:
| 来源 | 目标 |
|---|---|
| .NET框架(任何版本) | .NET 8 或更高版本 |
| .NET Core 1.x–3.x | .NET 8 或更高版本 |
| .NET 5 或更高版本 | .NET 8 或更高版本 |
代理会分析依赖项关系图、检查 NuGet 兼容性、识别中断性变更,并使用解决方案的最佳策略(从上到下、从上到下或一次性创建任务计划)。 如果项目需要格式转换,代理会在升级过程中自动处理它们。
SDK 样式转换
将旧版 .csproj 和 .vbproj 文件转换为新式 SDK 样式的格式,而无需更改目标框架。 代理在版本升级期间自动处理转换。 如果需要,请独立运行此方案。
Newtonsoft.Json 升级
替换为Newtonsoft.JsonSystem.Text.Json整个解决方案。 处理自定义转换器、 [JsonProperty] 属性、 JObject/JArray 用法和序列化设置。
SqlClient 升级
从 System.Data.SqlClient 升级到 Microsoft.Data.SqlClient。 处理 Encrypt=true 默认行为更改和连接字符串差异。
Azure Functions升级
使用 Program.cs 和 HostApplicationBuilder 将进程内托管模型Azure Functions升级到独立辅助角色模型。 包括 Application Insights 升级。
语义内核到 Microsoft Agent Framework
从 语义内核 代理(ChatCompletionAgent、OpenAIAssistantAgent)升级到 Microsoft Agent Framework。 更新包和 API 模式。
升级技能:常见
跨项目类型应用的常规用途升级技能。
| 技能 | 它的作用是什么 |
|---|---|
| 转换为 SDK 样式 | 将旧项目文件转换为新式 SDK 样式的格式。 对多项目解决方案使用拓扑排序。 |
| 将 Autofac 升级到 .NET DI | 完全删除 Autofac 并将所有注册升级到内置 ASP.NET Core依赖项注入。 |
| 将 Autofac 保留为 DI 容器,但将其 ASP.NET Core集成现代化。 | |
| 升级加密命名空间 | 修复 System.Security.Cryptography 了类似 X509Certificate2 和 SignedCms. 类型的命名空间拆分。 |
| 将 Newtonsoft 升级到 System.Text.Json | 完全从 . 升级。Newtonsoft.Json 处理转换器、属性、动态类型和设置。 |
| 将语义内核升级到代理 | 将语义内核代理 API 升级到 Microsoft Agents AI Framework。 |
| 升级到 MSMQ。消息 | 从 System.Messaging (仅限 .NET Framework)升级到 .NET Core 的 MSMQ.Messaging。 |
| 转换为中央包管理 | 使用 Directory.Packages.props每项目 NuGet 包版本控制转换为集中式包管理。 |
| 新式化 C# 版本 | 升级 C# 代码以使用较新的语言功能(C# 7.0 到 15)。 对机械更改进行 dotnet format 批处理,并使用 LLM 判断进行语义转换。 |
| 升级 C# 可为空引用 | 启用可为 null 的引用类型,并系统地解析所有 CS86xx 警告。 介绍推出策略、注释指南和特定于框架的注意事项。 |
升级技能:数据访问
升级数据访问层(包括 Entity Framework、LINQ to SQL 和 SQL 客户端库)的技能。
| 技能 | 它的作用是什么 |
|---|---|
| 将 EDMX 升级到 Code-First | 将 EF6 Database-First (.edmx) 模型转换为 EF Core Code-First。 从数据库搭建实体的基架。 |
| 升级 EF DbContext | 在 ASP.NET Core依赖项注入中注册 DbContext。 处理 EF6 到 EF Core 和现有 EF Core 模式。 |
| 将 EF6 Code-First 升级到 EF Core | 将 EF6 Code-First 升级到 EF Core。 交换包、更新命名空间以及替换EntityTypeConfiguration和替换。DbModelBuilder |
| 将Microsoft更新。Data.SqlClient | 从 . 升级 。System.Data.SqlClient 处理 Encrypt=true 默认更改和连接字符串差异。 |
升级技能:Web 和 ASP.NET
将 ASP.NET Framework 应用程序升级到 ASP.NET Core的技能。
ASP.NET 框架升级
| 技能 | 它的作用是什么 |
|---|---|
| 将 ASP.NET Framework 降级到 Core | 从 ASP.NET Framework(MVC/WebAPI)全面升级到 ASP.NET Core,包括控制器、视图、中间件、身份验证和配置。 |
| Upgrading ASP.NET Identity | 将 ASP.NET MVC标识升级到 ASP.NET Core标识,包括 IdentityDbContext、UserManager、SignInManager 和身份验证中间件。 |
| 升级 Global.asax | 将 Global.asax 生命周期事件 (Application_Start, Application_Error) 转换为 ASP.NET Core Program.cs 和中间件。 |
| 将 OWIN 升级到中间件 | 将 OWIN/Katana 中间件(IAppBuilder,OwinMiddleware)替换为 ASP.NET Core等效项。 |
| 升级 OWIN Cookie 身份验证 | 将 OWIN Cookie 身份验证中间件升级到 ASP.NET Core Cookie 身份验证。 |
| 将 OWIN OAuth 升级到 JWT | 将 OWIN OAuth 持有者令牌身份验证升级到 ASP.NET Core JWT 持有者身份验证。 |
| 升级 OWIN OpenID Connect | 将 OWIN OpenID Connect 中间件升级到 ASP.NET Core OpenID Connect 身份验证。 |
MVC 功能
| 技能 | 它的作用是什么 |
|---|---|
| 升级 MVC 身份验证 | 将 ASP.NET MVC身份验证升级到 ASP.NET Core标识和身份验证中间件。 |
| 升级 MVC 捆绑 | 将 System.Web.Optimization 捆绑转换为直接 <script>/<link> 标记或新式捆绑包。 |
| 升级 MVC 配置 | 将 web.config 和 app.config 设置升级到 ASP.NET Core配置系统(appsettings.json环境变量)。 |
| 升级 MVC 内容协商 | 将内容协商模式和格式化程序升级到 ASP.NET Core。 |
| 升级 MVC 控制器 | 将 MVC 和 WebAPI 控制器升级到 ASP.NET Core控制器模式。 |
| 升级 MVC 依赖项注入 | 将 DI 容器注册升级到 ASP.NET Core的内置依赖项注入。 |
| 升级 MVC 筛选器 | 将全局 MVC 筛选器(FilterConfig、GlobalFilters)转换为 ASP.NET Core中间件和筛选器管道。 |
| 升级 MVC HTTP 管道 | 将 HTTP 模块和处理程序升级到 ASP.NET Core中间件。 |
| 升级 MVC HttpContext | 将 System.Web.HttpContext 用法升级到 ASP.NET Core HttpContext。 |
| 升级 MVC 日志记录 | 将日志记录升级到 Microsoft.Extensions.Logging。 |
| 升级 MVC 模型绑定 | 将模型绑定模式升级到 ASP.NET Core模型绑定。 |
| 升级 MVC Razor 视图 | 将 Razor 视图、布局和视图组件升级到 ASP.NET Core Razor。 |
| 升级 MVC 路由 | 将 RouteCollection 路由转换为 ASP.NET Core终结点路由(MapControllerRoute,属性路由)。 |
| 升级 MVC 会话状态 | 将会话状态升级到 ASP.NET Core分布式会话。 |
| 升级 MVC 静态文件 | 将静态文件处理升级到 ASP.NET Core的静态文件中间件。 |
| 升级 MVC System.Web 适配器 | 使用 System.Web 适配器从 ASP.NET Framework 增量升级到 ASP.NET Core。 |
| 升级 MVC 验证 | 将验证属性和模式升级到 ASP.NET Core验证。 |
WCF
| 技能 | 它的作用是什么 |
|---|---|
| 将 WCF 升级到 CoreWCF | 将服务器端 WCF 服务升级到 CoreWCF for .NET 6+。 转换托管、绑定、行为扩展和异步协定。 |
升级技能:云和Azure
| 技能 | 它的作用是什么 |
|---|---|
| Upgrading Azure Functions Startup | 使用 Program.cs 从进程内 Startup 类升级到独立辅助角色模型Azure Functions。 |
| 将Azure Functions升级到 v2 | 使用 IHostApplicationBuilder 升级到 v2 托管模式Azure Functions。 |
| Upgrading Azure 密钥保管库 | 将旧版 Azure 密钥保管库 SDK 升级到新式 Azure.Security.KeyVault 库。 |
| upgrading Azure 服务总线 | 将旧版 Azure 服务总线 SDK 升级到新式 Azure.Messaging.ServiceBus 库。 |
| Upgrading Azure 存储 | 将旧版 Azure 存储 SDK 升级到新式 Azure.Storage 库。 |
升级技能:库
| 技能 | 它的作用是什么 |
|---|---|
| 将 ADAL 升级到 MSAL | 将Azure Active Directory身份验证库(ADAL)升级到Microsoft 身份验证库(MSAL)。 |
| Upgrading ASP.NET SignalR | 将 signalR ASP.NET 升级到 ASP.NET Core SignalR。 |
| 升级绑定接口 | 将Microsoft邦德序列化升级到新式替代项。 |
| 将数据 EDM 升级到 OData | 将 Data.Edm 类型升级到 OData 库。 |
| 将数据 OData 升级到 OData Core | 将 Microsoft.Data.OData 升级到 Microsoft.OData.Core。 |
| 升级 Data Services 客户端 | 将 WCF Data Services 客户端升级到新式 OData 客户端。 |
| 升级 PowerShell SDK | 使用 Microsoft.PowerShell.SDK 包将 PowerShell 模块从 Windows PowerShell 5.1 升级到 PowerShell 7+ 。 |
| 将 SPA 服务升级到 SPA 代理 | 将 Microsoft.AspNetCore.SpaServices 升级到 SPA 代理托管模型。 |
| 升级 System.Spatial | 将 Microsoft.Spatial 和 System.Spatial升级到新式空间替代项。 |
| 升级 WebAPI CORS | 将 System.Web.Http.Cors 升级到 ASP.NET Core CORS 中间件。 |
| 升级 WebAPI OData | 将 WebAPI OData 升级到 ASP.NET Core OData。 |
技能激活时
随着升级会话的展开,代理会逐步加载技能:
| 什么时候 | 发生的情况 |
|---|---|
| 会话启动 | 代理将加载匹配的方案以及与代码库立即相关的任何技能。 |
| 执行期间 | 当代理通过任务工作时,它会在遇到特定的升级模式(如 EDMX 文件、WCF 服务或 OWIN 中间件)时按需加载额外的专业技能。 |
| 请求时 | 你可以要求代理随时使用任何技能。 例如, “帮助我将 WCF 升级到 CoreWCF” 或 “使用 EF6 升级技能”。 |
无需管理技能加载。 代理会自动处理它。 只需描述所需的内容。
创建自己的技能
创建自定义技能来教授特定于代码库的代理模式,例如内部框架升级、编码约定或自定义升级工作流。
将技能放在存储库(.github/skills/)或用户配置文件(%UserProfile%/.copilot/skills/)中,代理会自动选取它们。
有关创建自定义技能的详细信息,请参阅 应用自定义升级说明。
相关内容
- 什么是GitHub Copilot现代化?
- 核心概念
使用GitHub Copilot现代化 - 应用自定义升级说明