.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

相關文章
相關標籤/搜索