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)
沒有留言:
張貼留言