.NET Core 3.1 升级到 .NET 8
.NET Core 3.1 升级到 .NET 8 全攻略
在软件开发的世界里,技术的更新换代是常态。.NET Core 3.1 已经陪伴开发者走过了很长的时间,然而微软在 2022 年底就停止了对它的支持,后续的 LTS 版本 .NET 6 也将在 2024 年 11 月终止支持。所以,直接升级到 .NET 8 成为了一个明智之选。今天,我们就来详细探讨如何将 .NET Core 3.1 项目升级到 .NET 8。
微软的贴心助手:Upgrade Assistant
微软官方为我们提供了升级工具 Upgrade Assistant,它就像是一位专业的升级向导,让升级过程变得简单许多。其链接地址为:https://dotnet.microsoft.com/zh-cn/platform/upgrade-assistant/tutorial/intro。
安装 Upgrade Assistant
在使用这个工具之前,我们需要做一些准备工作。首先,要确保 VS2022 已经升级到 17.8 版本。之后,在 VS2022 的扩展管理中安装扩展:.NET Upgrade Assistant。这里要特别提醒,如果之前安装过这个升级工具扩展,需要先卸载再重新安装,以免出现兼容性问题。
项目升级实战
在 .NET Core 3.1 的解决方案中,通常会包含多个项目。我们要按照项目的依赖关系,从最底层的项目开始,逐个往上进行升级。具体步骤如下:
- 触发升级:安装完升级工具后,在项目上点击右键,会出现“Upgrade”按钮,点击它即可开启升级之旅。
- 选择升级方式:点击“Upgrade”按钮后,会弹出一个窗口,让我们选择升级方式。
- 确定目标版本:在众多版本中,我们选择 .NET 8,因为它是长线支持版本。需要注意的是,最新版本的升级工具只支持升级到 7 和 8,如果有升级到 .NET 6 的需求,就需要使用老版本的工具了。
- 选择更新内容:在这一步,默认是全选所有需要更新的内容,然后点击「Upgrade selection」开始升级。
- 升级完成:稍等片刻,我们就能看到升级成功的提示,是不是很简单呢?
编译过程中的“绊脚石”及解决方案
虽然升级工具能帮助我们顺利完成升级操作,但在编译代码时,可能会遇到一些问题。下面为大家详细介绍这些问题及解决办法。
问题 1:Ionic.zip 不再支持
在原来的版本中,项目可能使用了 Ionic.zip 进行 zip 压缩,但在 .NET 8 中,它已经不被支持了。我们需要将其替换为 DotNetZip,这样才能保证压缩功能正常使用。
问题 2:BinaryFormatter 过时
在代码中,如果有不少地方使用了二进制的序列化,而 BinaryFormatter 在 .NET 8 中已经被弃用。我们有两种解决方式:
- 修改源代码:这是一种比较推荐的方式,我们可以采用新的序列化方法来替换 BinaryFormatter。这样不仅能解决问题,还能让代码更加符合 .NET 8 的规范。
- 忽略问题:如果修改源代码比较麻烦,我们也可以修改项目文件,忽略此问题。在项目文件中添加如下配置:
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup>...<NoWarn>$(NoWarn);SYSLIB0011</NoWarn></PropertyGroup>
</Project>
参考链接:https://learn.microsoft.com/zh-cn/dotnet/fundamentals/syslib-diagnostics/syslib0011
问题 3:Aspose 使用问题
如果项目中使用了 Aspose 套件来处理 Office 文件,升级后可能会出现版本兼容性问题。解决方法很简单,只需要将 Aspose 升级到对应的版本即可。
问题 4:方法二义性
在之前的版本中,如果 List 存储的是复杂类型,想要按照类型中的某个字段进行去重是比较困难的。我们可能会扩展一个 DistinctBy 方法来实现这个功能。但在 .NET 8 中,已经默认提供了这个方法,这就导致了方法冲突。我们只需要将自己扩展的 DistinctBy 方法去掉,使用默认的方法就可以了。
顺利运行
当我们解决了上述编译问题后,程序就能正常启动运行了。不得不说,微软在技术向下兼容方面做得非常出色,再加上升级工具的助力,让我们升级到新的版本没有太大的压力和负担。与其他一些技术相比,虽然它们也在不断更新迭代,但开发者往往还是更倾向于使用某个特定的版本。而 .NET 的升级体验,无疑为开发者提供了更多的便利和选择。
总之,将 .NET Core 3.1 升级到 .NET 8 虽然会遇到一些小问题,但只要我们按照上述步骤和方法进行处理,就能顺利完成升级,享受到 .NET 8 带来的新特性和性能提升。希望这篇文章能对大家有所帮助。 ======================================================================
前些天发现了一个比较好玩的人工智能学习网站,通俗易懂,风趣幽默,可以了解了解AI基础知识,人工智能教程,不是一堆数学公式和算法的那种,用各种举例子来学习,读起来比较轻松,有兴趣可以看一下。
人工智能教程