[.NET Core 3.1]從.NET Core 2.2 升級至3.1

.NET Core 2.2 已經從2019年12月已經不在更新

就正好趁現在還有點空來做升級...

環境

  • .NET Core 2.2 Web API 
  • .EF Core 2.2

1. 首先將每一個.csproj 的Target Framework 改為3.0 (在VS2019 中按右鍵點屬性選擇Framework 3.0)

改完3.0 開始Build就會陸續出現錯誤, 我目前的解法是一個一個看錯誤的內容然後再找找MSDN和一些網誌的資料

2. 更新每一個專案套件

3. 更新fromSql 語法

4. 這個比較 Tricky 我把錯誤訊息丟到Google 去找一直沒找到原因, 
錯誤訊息大概是找不到我目前參考到的專案的中繼資料檔, 後來打開.csproj檔發現有一個東西長得很奇怪
註解掉就沒有這個問題了

5. 修改Newtonsoft.Json 為 System.Text.Json

如果有些class有Serialize的話 要改成如下圖

6. 刪除Microsoft.AspNetCore.Http.Internal; 
    並修改request.EnableRewind() => request.EnabledBuffering()

7. ConfigureService 中的service.AddMvc() 要改為 AddControllers() (相關說明
option 的SerializerSettings也改為JsonSerializerOptions

注意SetCompatibilityVersion(CompatibilityVersion.Version_2_2) 在3.0 已經不適用了 (相關說明)

8. AddSwaggerGen 中 Info => OpenApiInfo, Contact => OpenApiContact
因為Url也沒有再用就順便註解掉了

9.  修改 IHostingEnviroment => IWebHostEnvironment

注意 using Microsoft.AspNetCore.Mvc 也要改為Microsoft.Extension.Hosting (這裡沒有截圖到)

10. app.UseMvc => app.UseEndpoints 寫法如下

11. services.AddApiVersioning 在debug的時候 立馬就跳錯誤了

原來是還沒有implement 目前先註解掉 版本先用swagger option (從config注入的版本為主)

稍微測試了一下看起來是沒甚麼問題 , 就繼續升級到3.1

升級3.1

注意3.1 才是LTS的版本 不要升級到這裡就放棄阿 , 升級3.1很快的 (版本Download)

一樣把Target Framework 選到3.1 就可以了

重新Rebuild 一下 , 我目前沒有改甚麼就可以正常run了 給大家參考

 

參考文章

微軟重大變革 - 從2.2 版遷移至3.0 的突破性變更

從ASP.NET 2.2 遷移至 3.0

Migration from Asp.Net Core 2.2 to 3.1 — Real project

-----------------------------------------

有時在會走之前你就得跑

你不解決問題 就等問題解決你