本文介绍如何规划和执行 .NET 应用程序的升级。 它可帮助你评估当前应用、选择正确的升级路径、使用可用的工具并验证升级的应用。 使用指南从 .NET Framework 升级到新式.NET、迁移到最新的.NET版本,或为云和容器实现应用现代化。
何时升级
考虑在业务或技术信号显示明确的值时升级:
- .NET 或其他依赖项终止支持。
- 发现新的安全漏洞,或者必须满足新的符合性要求。
- 你面临着较新的.NET版本解决的性能或可伸缩性限制。
升级也是实现应用现代化的好机会。 例如,可以容器化应用、将组件移动到云原生服务,或应用可提高可靠性和可操作性的云模式。 升级还通过启用可简化开发和减少维护的较新的 SDK、模板和语言功能来提高开发人员工作效率。
按风险和返回确定升级优先级:运行有针对性的评估,对低风险项目进行试点更改,并使用结果来规划更广泛的迁移。
.NET发布生命周期
.NET每年发布新的主版本,在标准长期支持(STS)和长期支持(LTS)版本之间交替。 每个版本都有一个定义的支持窗口,之后它不再收到安全和质量更新。 围绕这些日期规划升级节奏,以便应用保持受支持的版本:
- LTS 版本 支持三年,是首选稳定性的生产应用的典型选择。
- STS 版本 支持 18 个月,当你希望更快地采用新功能时非常有用。
有关受支持的版本、支持终止日期和修补指南,请参阅 .NET 版本、修补程序和支持以及 .NET 和 .NET Framework 支持策略。
.NET SDK 可以将目标设为较旧版本的 .NET;如果你要部署到尚不支持最新运行时的托管服务,则可能需要这样做。 使开发人员工具保持最新状态,因为每个版本都解决了安全漏洞,并增加了与新技术的兼容性。
选择升级路径
大多数升级属于以下类别之一。 从与方案匹配的指南开始,然后使用本文后面介绍的工具执行该工作。
从 .NET Framework 到现代 .NET
将仅Windows.NET框架应用移动到跨平台.NET。 应用模型、项目格式和某些 API 会发生变化,可能需要替换新式.NET中不可用的技术。 有关更改和计划方式的概述,请参阅从 .NET Framework 移植到 .NET 的Overview。 相关指南:
较旧的.NET到最新的 .NET
从支持不足或较旧的.NET版本移动到当前版本。 这些升级的范围通常较小,主要涉及目标框架、依赖项和破坏性变更的更新。 请查看你要跨越的版本中的.NET 破坏性变更。
升级后实现现代化
应用在新式.NET上生成并运行后,利用较新的模式,例如
appsettings.json配置、依赖项注入和新式 Web 和桌面控件。 有关相关思路和分步指导,请参阅 从 .NET Framework 升级到 .NET 后实现现代化。移动到云
容器化应用,将本地组件替换为托管服务,并采用云模式实现可靠性和可观测性。
GitHub Copilot 应用现代化(推荐)
GitHub Copilot 应用现代化代理提供了 AI 辅助的端到端体验,可加快移植和现代化工作的速度。 代理将分析项目并编写一个计划来完成所需的升级。 可以调整并迭代计划,然后执行升级。 使用此代理,可以:
- 将项目升级到较新的 .NET 版本。
- 评估应用程序的代码、配置和依赖项。
- 将项目从较旧的 .NET 版本迁移到最新版本。
- 将应用依赖的技术迁移到 Azure。
- 规划和预配正确的 Azure 资源。
- 修复问题并应用云迁移最佳做法。
- 确认您的应用程序能够构建并通过测试。
如果需要引导式 AI 驱动的路径来评估、修正和现代化代码库,尤其是对于具有许多依赖项的项目、依赖于特定于Windows API 或计划容器化或迁移到云的项目,请使用代理。 有关详细信息,请参阅 什么是 GitHub Copilot 应用现代化。
.NET升级助手(已弃用)
.NET升级助手是Visual Studio扩展和 CLI 工具,用于分析项目并应用常见的升级更改。 它已被官方弃用,转而由 GitHub Copilot 应用现代化代理取代,且不再积极开发。 仅在你无法使用现代化代理时才使用它,例如当你的环境无法访问 GitHub Copilot 时。 新的工作应改为以现代化代理为目标。