通过


方案和技能参考

.NET的GitHub Copilot现代化有助于通过 scenariosskills

  • 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.csHostApplicationBuilder 将进程内托管模型Azure Functions升级到独立辅助角色模型。 包括 Application Insights 升级。

语义内核到 Microsoft Agent Framework

从 语义内核 代理(ChatCompletionAgentOpenAIAssistantAgent)升级到 Microsoft Agent Framework。 更新包和 API 模式。

升级技能:常见

跨项目类型应用的常规用途升级技能。

技能 它的作用是什么
转换为 SDK 样式 将旧项目文件转换为新式 SDK 样式的格式。 对多项目解决方案使用拓扑排序。
将 Autofac 升级到 .NET DI 完全删除 Autofac 并将所有注册升级到内置 ASP.NET Core依赖项注入。
将 Autofac 与 .NET 将 Autofac 保留为 DI 容器,但将其 ASP.NET Core集成现代化。
升级加密命名空间 修复 System.Security.Cryptography 了类似 X509Certificate2SignedCms. 类型的命名空间拆分。
将 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标识,包括 IdentityDbContextUserManagerSignInManager 和身份验证中间件。
升级 Global.asax Global.asax 生命周期事件 (Application_StartApplication_Error) 转换为 ASP.NET Core Program.cs 和中间件。
将 OWIN 升级到中间件 将 OWIN/Katana 中间件(IAppBuilderOwinMiddleware)替换为 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.configapp.config 设置升级到 ASP.NET Core配置系统(appsettings.json环境变量)。
升级 MVC 内容协商 将内容协商模式和格式化程序升级到 ASP.NET Core。
升级 MVC 控制器 将 MVC 和 WebAPI 控制器升级到 ASP.NET Core控制器模式。
升级 MVC 依赖项注入 将 DI 容器注册升级到 ASP.NET Core的内置依赖项注入。
升级 MVC 筛选器 将全局 MVC 筛选器(FilterConfigGlobalFilters)转换为 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.SpatialSystem.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/)中,代理会自动选取它们。

有关创建自定义技能的详细信息,请参阅 应用自定义升级说明