2023/02/19

[.NET] 如何使用 .NET Upgrade Assistant 升級舊 ASP.NET MVC 專案

markdown ### 問題 進入 .NET 7 的今日,手邊仍有許多舊的專案,要如何將舊專案升級呢? 微軟提供了 .NET Upgrade Assistant 工具來協助升級舊專案。 讓我們一起來一步步升級吧! ### 升級專案 舊專案環境: - ASP.NET MVC 5.2.9 - .NET Framework 4.7.2 想要升級目標專案至 .NET 7
### 升級步驟 1. 目前 .NET Upgrade Assistant 只支援 Visual Studio 2022 版本,請先確認版本可安裝 可在 Visual Studio 裡的 Extensions 來搜尋安裝,也可以至 Marketplace 下載 [.NET Upgrade Assistant](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.upgradeassistant) 安裝。
2. 安裝之後,可以在專案上按右鍵找到 Upgrade 選項
3. 升級小工具會依據專案屬性提供不同的升級方案。由於我的是由 ASP.NET MVC (.NET Framework) 升級至 ASP.NET Core MVC,這裡只提供 Side-by-side incremental project upgrade 的選項
其他可能提供的選項: - In-place project upgrade - Side-by-side project upgrade - Side-by-side incremental project upgrade --- 4. 接著會問要升級的目標 在此,我選擇在新專案升級
5. 升級新專案的樣版,這裡可以選 ASP.NET Core MVC 或 ASP.NET Core WebAPI
6. 接著選擇要升級的目標 當然就選目前的版本 .NET 7.0
7. 變更的概括 從原本 QuestPdfDemo 專案,至新專案 QuestPdfDemoCore 的變更 按 Finish 後執行升級動作,全綠燈勾勾就完成升級
8. 升級完後,會需要做各別檔案的升級動作 - Upgrade Controller - Upgrade Class - Upgrade View
可以查看完成升級的比例,確認是否都成功轉換
9. 升級後的專案,確認版本
10. 執行編譯,修正錯誤,升級完成! 恭喜你~升級成功! ### 升級後遇到的問題點 1. 因為原本使用 .NET Framework,在 ASP.NET MVC 讀取檔案的路徑方法不相同,需要手動修正(雖升級成功,但編譯時會發現錯誤) 2. 在 .NET Core 已內建 DI,但是要把自己寫的 Service Class 注入時要在 Program.cs 加入服務註冊才行 3. 對外的靜態檔案要搬去 wwwroot 唷,剛好測試的網站沒有,可能是這樣升級程式沒有自動幫忙建立,頁面的路徑可能也要重新對過 ### 參考連結 - [Upgrading your .NET projects with Visual Studio](https://devblogs.microsoft.com/dotnet/upgrade-assistant-now-in-visual-studio/?WT.mc_id=DT-MVP-5002629) - [Upgrade Your .NET Projects Faster with Visual Studio](https://www.youtube.com/watch?v=3mPb4KAbz4Y) - [Marketplace - .NET Upgrade Assistant](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.upgradeassistant)

沒有留言: