.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
一樣把Target Framework 選到3.1 就可以了
重新Rebuild 一下 , 我目前沒有改甚麼就可以正常run了 給大家參考
參考文章
Migration from Asp.Net Core 2.2 to 3.1 — Real project
-----------------------------------------
有時在會走之前你就得跑
你不解決問題 就等問題解決你