這篇文章主要介紹了從ASP.NET Core3.1遷移到6.0的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們來一起學習進步吧
11月中旬,微軟官方已經發布了dotnet 6的lts版
dotnet core經過前幾個版本的發展和沉淀,到3.1已經基本趨於穩定。
所以從 .net core 3.1升級到.net 6將非常簡單,確定你使用的vs是 Visual Studio 2022 或更高版本
下面咱們就開始吧:
在global.json中更新 .NET Core SDK 版本 (沒有此文件可以忽略)
{
"sdk": {
"version": "6.0"
}
}
更新項目文件目標框架
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
重新包引用
在項目文件中,將每個 Microsoft.AspNetCore.* 和 Microsoft.Extensions.* 包引用的 Version 屬性更新為6.0.0 或更高版本。
更新 Docker 鏡像
對於使用 Docker 的應用,請使用包含 dotnet 6.0 的基本鏡像。 例如:
原來
mcr.microsoft.com/dotnet/aspnet:3.1
mcr.microsoft.com/dotnet/sdk:3.1
現在
mcr.microsoft.com/dotnet/aspnet:6.0
mcr.microsoft.com/dotnet/sdk:6.0
從3.1版遷移到6.0版的重大更改
那從dotnet core 3.1 到 dotnet 6 的lts版 有哪些重大更改呢?
其實也並不多,主要集中在以下幾點:
-
Azure:刪除了Microsoft前綴的Azure集成程序包
-
SignalR:MessagePack集線器協議已移至MessagePack 2.x程序包
-
SignalR:UseSignalR和UseConnections方法已刪除
可以會有的坑
-
Core WebApi框架模板項目中默認集成了swagger,這個是新增的,但之前項目有一些自定義配置和擴展,也導致了沖突。
-
想嘗試C#10體驗下新語法新特性需要花了一些時間。
-
【容器內運行需要注意】項目升級完發現的Bug,DateTime這個天天見的值出現了變化,在 ASP.NET Core 3.1 及更早版本中,DateTime綁定的是服務器本地時間,而5.0之后,DateTime綁定的是UTCTime。當前時間問題解決方式:https://github.com/dotnet/dotnet-docker/issues/3237
