服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

用 Visual Studio 升级 .NET 项目

日期: 来源:微软开发者MSDN收集编辑:Olia Gavrysh

点击上方蓝字

关注我们

(本文阅读时间:10分钟)


现在,你已可以使用 Visual Studio 将所有 .NET 应用程序升级到最新版本的 .NET!这一功能可以从 Visual Studio 扩展包中获取,它会升级你的 .NET Framework 或 .NET Core 网页和桌面应用程序。一些项目类型仍正在开发中并将在不久的未来推出,请参阅以下的详细信息。
  • Visual Studio 扩展包
  • https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.upgradeassistant



为什么要升级?升级到哪个版本?


如果你的应用程序是为 .NET Framework 或 .NET Core 构建的,现在是将它们升级到 .NET 6(长期支持版本)或 .NET 7(标准期限支持版本)的好时机。.NET 6 和 .NET 7 具有更好的性能并能为你提供最新的特性和功能。.NET Framework 和最新的 .NET 之间已经有了巨大的改进,但即使你仍然在使用 .NET Core 3.1 或更早版本,它也已在 2022 年 12 月结束支持。
我们建议转移到 .NET 6 或 .NET 7!

.NET 6 和.NET 7 这两者相比,.NET 6 的支持时间更长,而 .NET 7 是最新的版本,因此具有更新的功能。我们每年 11 月都会发布新版本的 .NET,每个偶数版本的 .NET 都会有 3 年的支持时间(长期支持(Long Term Support),简称 LTS)。因此,你可以选择坚持每年升级确保你使用的都是最新的尖端技术,或者你可以选择每 2-3 年从上一个 LTS 切换到下一个 LTS。



关于升级助手


升级你的应用程序是一个复杂的过程,而从 .NET Framework 升级尤其复杂。我们在这方面不断地进行原型设计和改进以简化这一升级过程。过去,你可能使用过 Upgrade Assistant CLI 工具或 Microsoft Project Migrations。我们已经收到了你们的反馈,非常感谢大家为我们填写的调查问卷、评论、创建的问题和功能请求!通过大家的反馈,我们得出结论,我们需要为 Visual Studio 中的每个项目类型提供统一的升级体验。
现在,你可以在 Solution Explorer(解决方案资源管理器)中右键单击你的项目并选择“升级”,这样就可以让各种类型的 .NET 应用程序从任何初始版本(.NET Framework 或 .NET Core)升级。不要忘记先安装扩展包。

升级助手的一般理念是它会帮忙处理机制,但根据你要升级的框架和项目类型,你可能会需要进行一些手动的后期处理。虽然我们会努力尝试自动修复失败的变化,但它无法检测并修复所有的错误。因此,你可能需要进行一些额外的修改才能编译代码,同时你需要进行彻底的测试以确保你的代码能够继续照常工作。



支持的应用程序类型


我们的目标是支持每一种 .NET 项目类型。我们认为此工具不仅是从 .NET Framework 到 .NET 6/7 的一次性升级,同时也会是未来能够将你的应用程序升级到最新 .NET 的一种方式。除了更改目标框架版本外,该工具还能够修改你的代码以修复错误的更改。这些是我们对未来的计划,以下是该工具目前在最新版本中支持的内容:

▌已支持
  • ASP.NET

  • Class libraries

  • Console

  • WPF

  • WinForms


这些工作负载与 Upgrade Assistant CLI 工具相当。

▌即将推出

  • Xamarin 迁移到 .NET MAUI
  • UWP 迁移到 WinUI
  • WCF 迁移到 WCF Core

这些迁移类型正在开发中。你现在已经可以升级这些项目,但我们还没有这些项目的代码修复程序。如果你现在就需要迁移这些项目类型,我们建议使用现有的升级助手命令行工具,该工具已经包含代码修复程序。Visual Studio 扩展包也将很快拥有这一程序。


不同的升级类型


升级助手支持3种升级类型。不同的项目类型对应不同的升级类型,因此你只会看到那些适合你的应用程序的选项。

▌In-place

选择该升级类型,你的原始项目将立即升级。如果你在使用 source control(源代码管理)并且更喜欢自己管理副本,例如,通过使用 branch (分支)管理,你可以选择这一升级类型。

▌Side-by-side

有了这一升级类型,你的原始项目将保持不变,同时会有一个包含升级代码的副本添加到你的解决方案中。如果你的应用程序有许多升级后可能会损坏的依赖项,则选择此升级类型会很方便。这样你就可以检查你的进度,而不必担心应用程序无法构建。

▌Side-by-side incremental

这是 Web 应用程序的理想选择。从 ASP.NET 升级到 ASP.NET Core 需要大量工作,有时还需要手动重构(因为这两种技术非常不同)。Class Libraries 通常与 Web 应用程序一起使用,因此我们也为 Class Libraries 启用了此类升级。增量升级会将 .NET 6/7 项目放在现有 .NET Framework 项目旁边,并将在 .NET 6/7 项目中实现的端点路由到那里,而所有其他调用将发送到 .NET Framework 应用程序。通过这种方式,你可以将升级与功能开发结合起来,并将你的项目一一迁移到 .NET 6/7,同时也能确保不会破坏你的应用程序。这种方法最初是在 Microsoft Project Migrations 工具中构建的,你可以将 Visual Studio 中的升级助手视为 Microsoft Project Migrations 经过改进和扩展后的新版本。从 .NET Core 或 .NET 5 升级到 .NET 6/7 比从 .NET Framework 升级要容易得多,因此 .NET Core 或 .NET 5 的升级建议使用 In-place 升级类型。

在下表中,你可以按项目类型找到所有升级类型的状态。

In-place
Side-by-side
Side-by-side   incremental
 .NET Framework 的 ASP.NET
不适用
不适用
支持
 .NET Core、.NET5+  的 ASP.NET
支持
不适用
不适用
 .NET Framework 的 WinForms
支持
支持
不适用
 .NET Core、.NET5+ 的 WinForms
支持
不适用
不适用
 .NET Framework 的 WPF
支持
支持
不适用
 .NET Core、.NET5+  的 WPF
支持
不适用
不适用
 .NET Framework 的 Class Libraries
支持
支持
支持
 .NET Core、.NET5+ 的 Class Libraries
支持
不适用
不适用
 .NET Framework 的 Console
支持
支持
不适用
 .NET Core、.NET5+  的 Console
支持
不适用
不适用
从Xamarin 到 MAUI
开发中
开发中
不适用
MAUI 的旧版本
开发中
不适用
不适用
从 UWP 到 WinUI
开发中
开发中
不适用
旧版本的 WinUI
开发中
不适用
不适用
Azure 函数
开发中
不适用
不适用
从 WCF 到 WCF 核心
开发中
不适用
不适用



逐步升级 


1.安装 Visual Studio 升级助手拓展包。
  • Visual Studio 升级助手拓展包

  • https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.upgradeassistant
2.在 Visual Studio 的 Solution Explorer 里右键单击要升级的项目,选择 Upgrade。
3.你将看到主页,其中包含一些升级选项。 
在不同的升级类型中介绍了要选择的选项。
  • 不同的升级类型


  • https://devblogs.microsoft.com/dotnet/upgrade-assistant-now-in-visual-studio/#different-upgrade-types

4.对于此示例,我选择 In-place. Side-by-side 将非常相似,只需执行一些额外的步骤。side-by-side incremental 的其他功能在我们之前的博客文章中进行了介绍。 
  • 之前的博客文章

  • https://devblogs.microsoft.com/dotnet/migrating-from-asp-net-to-asp-net-core-part-5/

5.然后,你需要选择要升级到的框架。该工具将仅建议对你的项目类型有意义的选项。在我的示例中,它是一个 .NET Framework Class Library,因此它也建议使用 .NET Standard。
所有升级都是向前的,这意味着,例如,如果你的项目已在 .NET 6 上,则只会提供 .NET 7 及更高版本。如果你的计算机上未安装所选的 SDK,系统将在下一步中提示你安装它。只需点击链接,并在安装 SDK 后返回升级。.NET Standard 仅建议用于面向 .NET Framework 的 Class Libraries。 
6.现在该选择要升级的组件了。最终,你将需要升级所有内容,但是如果你更喜欢逐步升级,则可以选择要开始的屏幕。 
7.单击 Upgrade selection 后,你将看到升级进度和升级完成后的报告。 

现在,你可以直接从 Visual Studio 中升级 .NET 项目。请在本文下方留言,告诉我们使用体验,以及你的项目还需要什么。谢谢你的反馈!
*未经授权请勿私自转载此文章及图片。
欢迎扫码前往原博客了解更多信息

喜欢记得分享哦~

相关阅读

  • TypeScript never  类型的 5 个使用技巧

  • 欢迎你阅读 「《重学 TypeScript 3.0》」 系列教程,本系列教程会包含 TypeScript 基础知识、进阶知识、类型体操(精选)、设计模式、核心特性实战和开源项目源码解析 「6」 大专
  • 类型编程原理和编写类型安全代码

  • 证明即程序,结论公式即程序类型。—— 柯里-霍华德对应[1]背景我们每天的编码都会使用到类型系统,本篇文章希望能够简单地介绍原理到实践,让读者能更好的使用类型系统编写出类
  • 图解 15 个 TS 内置工具类型

  • 欢迎你阅读 「《重学 TypeScript 3.0》」 系列教程,本系列教程会包含 TypeScript 基础知识、进阶知识、类型体操(精选)、设计模式、核心特性实战和开源项目源码解析 「6」 大专
  • 最近买的这件好东西,我很难憋住不夸

  • 最近董洁的直播,大家都看了吧?温柔、真实、诚意满满,看惯了明星带货的网友们都称她为「直播清流」——娓娓道来,像身边的一位朋友,只分享最真诚的经验。董洁直播间的氛围,跟咱们#
  • 一起变帅计划!

  • “我太TM想变帅了!就是不知道怎么操作?!”这是一个粉丝跟我说的。确实,很多人不知道变帅从何下手,怎么变帅?能变多帅?从哪开始?作为研究了这个课题7年的男人,我做过上千套搭配,开过课,
  • 王阳明教会我,如何加速 10 倍成长!

  • 上周六,我微信收到一条消息 ——这种情况,可能大部分人都会遇到,只是场景不一样。之前也一个同学找我聊天。他说:明白,我看了你很多文章,启发很大。我也想从现在开始,每天读书、学
  • 如何选择适合自己读的书

  • 经常会有朋友让我推荐几本书,问自己适合读什么样的书?如同有的人问我他适合做什么样的生意?这两个问题我都回答不上来因为我对你一无所知,完全是一无所知。什么都不知道不了解,我

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 用 Visual Studio 升级 .NET 项目

  • 点击上方蓝字关注我们(本文阅读时间:10分钟)现在,你已可以使用 Visual Studio 将所有 .NET 应用程序升级到最新版本的 .NET!这一功能可以从 Visual Studio 扩展包中获取,它会升级
  • 微软徐明强:谈谈ChatGPT及对技术的重新思考

  • 点击上方蓝字关注我们(本文阅读时间:6分钟)是2023 Microsoft Azure中国区年度技术峰会启幕之际,Azure 云科技推出的专栏。我们邀请了业界富有前瞻视野的技术、业务专家,畅谈行业
  • 紧急提醒:千万不要吃!

  • 吃花季到了!2月27日云南省市场监管局最新提醒谨慎选择食用鲜花不熟悉的花卉千万不要吃!“云南市场监管”微公号↑详情如下:谨慎选择食用鲜花注意食品安全,不识不买。食用鲜花应
  • 正式发布Linux 6.2,支持龙芯 LoongArch 架构

  • 点击上方蓝字 ● 关注Linux公社 这是一个短暂的分支,将仅在几个月内得到错误和安全修复的支持。Linus Torvalds 今天宣布发布 Linux 6.2,这是一个主要的新内核系列,带有新
  • 配置 Nginx 每分钟处理 10 万个请求

  • 点击上方蓝字 ● 关注Linux公社 在当今快节奏的数字世界中,企业需要能够处理大量网络流量以保持竞争力。实现这一目标的一种方法是使用像 Nginx 这样的高性能 Web 服务器