当前位置: 首页 > news >正文

.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 的解决方案中,通常会包含多个项目。我们要按照项目的依赖关系,从最底层的项目开始,逐个往上进行升级。具体步骤如下:

  1. 触发升级:安装完升级工具后,在项目上点击右键,会出现“Upgrade”按钮,点击它即可开启升级之旅。
  2. 选择升级方式:点击“Upgrade”按钮后,会弹出一个窗口,让我们选择升级方式。
  3. 确定目标版本:在众多版本中,我们选择 .NET 8,因为它是长线支持版本。需要注意的是,最新版本的升级工具只支持升级到 7 和 8,如果有升级到 .NET 6 的需求,就需要使用老版本的工具了。
  4. 选择更新内容:在这一步,默认是全选所有需要更新的内容,然后点击「Upgrade selection」开始升级。
  5. 升级完成:稍等片刻,我们就能看到升级成功的提示,是不是很简单呢?

编译过程中的“绊脚石”及解决方案

虽然升级工具能帮助我们顺利完成升级操作,但在编译代码时,可能会遇到一些问题。下面为大家详细介绍这些问题及解决办法。

问题 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基础知识,人工智能教程,不是一堆数学公式和算法的那种,用各种举例子来学习,读起来比较轻松,有兴趣可以看一下。
人工智能教程

http://www.lryc.cn/news/603344.html

相关文章:

  • 自学嵌入式 day37 HTML
  • 前端代码格式化工具HTML离线版
  • LangChain学习笔记01---基本概念及使用
  • SkSurface---像素的容器:表面
  • echarts饼图
  • .NET测试平台Parasoft dotTEST在汽车电子行业的核心功能及应用
  • OpenAI Python API 完全指南:从入门到实战
  • 使用jQuery动态操作HTML和CSS
  • 从centos更换至ubuntu的安装、配置、操作记录
  • 系统选择菜单(ubuntu grub)介绍
  • 智能健康项链专利拆解:ECG 与 TBI 双模态监测的硬件架构与信号融合
  • Ubuntu22.04系统安装,Nvidia显卡驱动安装问题
  • 【Linux系统编程】Ext2文件系统
  • Java 9 新特性解析
  • VR全景制作流程分享-众趣VR全景制作平台
  • 博物馆 VR 导览:图形渲染算法+智能讲解技术算法实现及优化
  • 以需求破局:DPVR AI Glasses 重塑 AI 眼镜产业生态
  • 【OpenAI】ChatGPT辅助编码:Spring Boot + Copilot自动生成业务逻辑
  • Agent常用搜索引擎Tavily使用学习
  • VR 三维重建:开启沉浸式体验新时代
  • idea 服务器Debug端口启动设置
  • 深度学习 目标检测常见指标和yolov1分析
  • Vue 3 响应式变量笔记
  • Chrome 提示 “此扩展程序不再受支持”(MacOS/Windows)
  • RabbitMQ面试精讲 Day 6:消息确认与事务机制
  • STL学习(?常用的遍历算法和查找算法)
  • 从协议栈到ath12k_mac_op_tx的完整调用路径
  • 云原生MySQL Operator开发实战(五):扩展与生态系统集成
  • Python 程序设计讲义(28):字符串的用法——格式化字符串
  • go install报错: should be v0 or v1, not v2问题解决