2023/02/19

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

問題

進入 .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 安裝。

  1. 安裝之後,可以在專案上按右鍵找到 Upgrade 選項
  1. 升級小工具會依據專案屬性提供不同的升級方案。由於我的是由 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

  1. 接著會問要升級的目標

在此,我選擇在新專案升級

  1. 升級新專案的樣版,這裡可以選 ASP.NET Core MVC 或 ASP.NET Core WebAPI
  1. 接著選擇要升級的目標

當然就選目前的版本 .NET 7.0

  1. 變更的概括

從原本 QuestPdfDemo 專案,至新專案 QuestPdfDemoCore 的變更

按 Finish 後執行升級動作,全綠燈勾勾就完成升級

  1. 升級完後,會需要做各別檔案的升級動作
  • Upgrade Controller
  • Upgrade Class
  • Upgrade View

可以查看完成升級的比例,確認是否都成功轉換

  1. 升級後的專案,確認版本
  1. 執行編譯,修正錯誤,升級完成!

恭喜你~升級成功!

升級後遇到的問題點

  1. 因為原本使用 .NET Framework,在 ASP.NET MVC 讀取檔案的路徑方法不相同,需要手動修正(雖升級成功,但編譯時會發現錯誤)
  2. 在 .NET Core 已內建 DI,但是要把自己寫的 Service Class 注入時要在 Program.cs 加入服務註冊才行
  3. 對外的靜態檔案要搬去 wwwroot 唷,剛好測試的網站沒有,可能是這樣升級程式沒有自動幫忙建立,頁面的路徑可能也要重新對過

參考連結