asp.net core 從 3.1 到 5.0

asp.net core 從 3.1 到 5.0

Intro

就在前幾天,微軟宣布了 .NET5 發布了 RC1 版本,這也意味著 .NET5 的開發基本穩定了,正式發布之前,不會再新增新的 Feature,只會專註於修復 BUG 提高穩定性。

對於開發者來說,RC版本的發布也意味著功能的穩定,可以上手嘗嘗鮮了,正式版的 API 不會再發生變化了,即使後面遷移到正式版也會很簡單

於是嘗試著把我之前練手的一個小項目 asp.net core webapi 的項目從 3.1 遷移到了 5.0,意想不到的順利,要比 2.x 更新順利的多

項目文件更新

首先需要更新項目的 TargetFramework 從原來的 netcoreapp3.1 變更到 net5.0

包引用更新

原來引用的 3.1.x 版本的 nuget 包更新成 5.0 的包

這裡有幾個不是 asp.net core 的包也順帶更新了

這裡更新用的包版本我使用的不是具體的版本號,你也可以使用具體的版本號,都是可以的

Docker 鏡像更新

docker 鏡像的更新分為兩部分,一個是鏡像名稱,一個是鏡像 tag

鏡像 tag 比較好說,要從 3.1 更新成 5.0

鏡像名稱的變化是原來的鏡像名稱中有一個 core,在 net 5.0 中移除了,不再突出區分 core

具體的如下:

mcr.microsoft.com/dotnet/core/sdk => mcr.microsoft.com/dotnet/sdk

mcr.microsoft.com/dotnet/core/aspnet => mcr.microsoft.com/dotnet/aspnet

More

總體來說,更新還是相當順利的,從 3.1 到 5.0,asp.net core 的 API 大多都是兼容的,沒有特別大的變更(Blazor 除外,Blazor有一些大的變更),
只需要更新項目 Target 和包版本以及 dockerfile 中基本鏡像的更新。

docker 鏡像需要注意一下,不僅僅是改一下 tag,從 3.1 改成 5.0,最近我就是這樣改的,結果提示找不到 tag,導致 build 失敗了,

後來仔細看了一下,docker 鏡像名稱也發生了變化,移除了原來鏡像名稱中的 core,更好的體現了 target 的變化,無論是項目文件中的 TargetFramework 還是 docker 鏡像都移除了名稱中的 core,也正是體現了微軟對於 .net core 的發展路線

後來突然想起來微軟官方文檔上應該有遷移文檔,然後就趕緊去看一下,微軟文檔上已經有說明了 docker 鏡像名稱的變化(應該先看微軟的官方文檔才對。。。不要學我,要先看微軟的文檔)

Reference

Tags: