昨晚.NET5迁移10小时,我发现了好几个致命坑...

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

背景介绍

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

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

VS升级坑

升级的第一个坑来自于VS工具升级!之前.NET5预览版、RC1、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操作笔记各种失灵,来来回回折腾了好几个小时。

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

.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项目迁徙大作战
(0)

相关推荐

  • Linux服务器部署.Net Core笔记:目录

        目录 Linux服务器部署.Net Core笔记:一.开启ssh服务 Linux服务器部署.Net Core笔记:二.安装FTP Linux服务器部署.Net Core笔记:三.安装.NetC ...

  • Blazor 初探

    dotNET跨平台 今天 以下文章来源于独立观察员博客 ,作者独立观察员DLGCY 独立观察员博客独立观察员·博客 http://dlgcy.com/ 的微信订阅号. Blazor 初探 目录 一.新 ...

  • 在CentOS8中部署Asp.net Core 5.0 WebApi

    在CentOS8中部署Asp.net Core 5.0 WebApi

  • ABP (.Net Core 3.1版本) 使用MySQL数据库迁移启动模板项目(1)

    最近要搭建新项目,因为还没有用过.net core,所以想用.net core的环境搭建新项目,因为不熟悉.net core的架构,所以就下载了abp项目先了解一下. 但是自己太菜了,下载了模板项目, ...

  • .Net Core 3.x Api开发笔记 -- 创建新的Api项目(一)

    本节演示如何创建 .Net Core 3.1 Web Api 项目 使用环境:vs2019 第一步:选择项目模板 有人习惯给项目起名时用点分开,这里Api项目的名字我没有用点 . 分开(后期使用第三方 ...

  • VS2019  .net core  更换bootstrap版本

    开发环境:VS2019 ​使用.netcore若选择了默认MVC模板,那么其将为整个模板添加bootstrap,但有时其bootstrap版本可能并不是你需要的,若需要更改其版本,可在libman.j ...

  • linux Ubuntu安装及更新升级R教程

    Distributor ID: Ubuntu Description: Ubuntu 18.04.3 LTS Release: 18.04 Codename: bionic 目录 安装 更新升级 走过 ...

  • So Easy - 在Linux服务器上部署 .NET Core App

    .NET Core 是微软提供的免费.跨平台和开源的开发框架,可以构建桌面应用程序.移动端应用程序.网络应用程序.物联网应用程序和游戏应用程序等.如果你是 Windows 平台下的 dotnet 开发 ...

  • CentOS和Ubuntu是什么?

    Linux与Windows一样,同属于操作系统,有很多发行版本,其中最常见的CentOS和Ubuntu.可能很多人对CentOS和Ubuntu不太了解,所以总有人会问:CentOS和Ubuntu有什么 ...

  • ASP.NET Core 5.0 的新增功能

    本文重点介绍 ASP.NET Core 5.0 中最重要的更改,并提供相关文档的链接. ASP.NET Core MVC 和 :::no-loc(Razor)::: 改进 通过模型绑定将日期/时间绑定 ...