.NET Core3.1升级.NET5,坑还真很多...

11月11号是电商狂欢的日子,也是.NET5正式发布的日子,媳妇儿等着零点秒杀,我却在刷新着微软官网等更新,而后第一时间开始折腾。此前Scott Hunter在博客信誓旦旦.NET Core3.1平滑迁移.NET5,因而当天就去升级个人宝藏项目,结果是大坑没有,小坑不断,折腾了一天时间才搞定,下面来仔细捋一捋,给搭建提供点参考。docker

背景介绍json

升级的项目是以前开源在Github上,也曾一周新增300star,后面虽因故关闭了,但我我的是很是用心的。这不.NET5刚发布,第一时间就开始了升级。小程序

项目是个微信小程序商城,后端是微服务架构支撑的,Ocelot网关+Consul服务注册发现+Core WebApi+gRPC+IdentityServer4都安排上了,总体仍是比较复杂的,MongoDB、Redis、RabbitMQ也都安排上了,而后就在.NET Core3.1升级.NET5的过程当中,各类踩坑。后端

VS升级坑微信小程序

升级的第一个坑来自于VS工具升级!以前.NET5预览版、RC一、RC2都是用的Visual Studio 2019 Preview,这会儿.NET5正式版发现只须要把Visual Studio 2019升级到V16.8便可,而后就兴冲冲的升级去了,结果当头一棒:Visual Studio Installer提示网络未链接没法下载!固然不是个人网络问题,实际上是DNS解析上出了毛病(部分用户会遇到,解决办法是把电脑的DNS设置为8.8.8.8便可),但毕竟当时是11号凌晨,觉得是微软官方同步不够,我就选择换工具,直接去Linux下用VS Code升级了,而后就开始了第二波环境坑!服务器

经验:若是遇到Visual Studio Installer提示网络未链接没法下载,能够将当前电脑DNS设置为8.8.8.8便可微信

Linux环境坑网络

Linux环境下VS Code开发以前都蛮熟悉了,此次想着是升级.NET5,就顺手把Linux系统从CentOS7给换成了CentOS8,而后又华丽丽的各类坑。好比CentOS8中网卡名字从ens33变成了eth0,用nftables替代iptables,各类小变化让人防不胜防,而后docker最新版本的命令也跟以前有些小变化,致使以前整理的Linux+Docker操做笔记各类失灵,来来回回折腾了好几个小时。架构

固然,环境只是环境,折腾完就过去了,而代码迁移层面的坑才是最麻烦的,由于并不知道还有多少没发现!app

.NET5迁移坑坑坑

项目从.NET Core3.1升级到.NET5很是easy,在 global.json 中将SDK版本从3.1升级成5.0,再将TargetFramework从netcoreapp3.1换成net5.0便可。还有部分类库命名空间变化彻底不要紧,宇宙第一IDE的智能提示轻松解决。可是,在真实项目迁移过程当中,我却遇到了各类小问题:

1

Core WebApi框架模板项目中默认集成了swagger,这个是新增的,但以前项目有一些自定义配置和扩展,也致使了冲突。

2

IdentityServer4第三方框架版本升级,API变化颇有点多,改动不了很多代码,这个锅虽然不是.NET5的,但也是升级项目会遇到的。

3

尝试C#9花了一些时间,想体验下新语法新特性,如Native ints原生Ints、Pattern matching improvements模式匹配改进版,结果几回把本身绕进去了。

4

项目升级完发现的Bug,DateTime这个每天见的值出现了变化,在 ASP.NET Core 3.1 及更早版本中,DateTime绑定的是服务器本地时间,而5.0以后,DateTime绑定的是UTCTime。

来场.NET5项目迁徙大做战

真是不动手不知道,全靠看帖子是靠不住的。自夸老司机的我,也花了快10个小时才完成了项目的迁移,并且还不知道有没有隐藏的坑!当下你们都面临着将项目迁移到.NET5,这些踩坑经验倒也可贵。今晚八点,我给你们来一波直播分享,实操.NET5+微服务+小程序,完成第一波.NET5实战,扫码进群,今晚见!

配套准备

本次分享只须要提早准备好.NET5相关环境便可,这里打包了VS2019 16.8的社区版、专业版、企业版安装文件,还有对应的激活码,须要请领取。

扫码领取配套资料

添加人数过多添加如下WX也可

zhaoxiHHHHH

相关文章
相关标签/搜索