用 Visual Studio 升級 .NET 專案

微軟技術棧發表於2023-03-02

現在,你已可以使用 Visual Studio 將所有 .NET 應用程式升級到最新版本的 .NET!這一功能可以從 Visual Studio 擴充套件包中獲取,它會升級你的 .NET Framework 或 .NET Core 網頁和桌面應用程式。一些專案型別仍正在開發中並將在不久的未來推出,請參閱以下的詳細資訊。

為什麼要升級?升級到哪個版本?

如果你的應用程式是為 .NET Framework 或 .NET Core 構建的,現在是將它們升級到 .NET 6(長期支援版本)或 .NET 7(標準期限支援版本)的好時機。.NET 6 和 .NET 7 具有更好的效能並能為你提供最新的特性和功能。.NET Framework 和最新的 .NET 之間已經有了巨大的改進,但即使你仍然在使用 .NET Core 3.1 或更早版本,它也已在 2022 年 12 月結束支援。

我們建議轉移到 .NET 6 或 .NET 7!

.NET 6 和.NET 7 這兩者相比,.NET 6 的支援時間更長,而 .NET 7 是最新的版本,因此具有更新的功能。我們每年 11 月都會發布新版本的 .NET,每個偶數版本的 .NET 都會有 3 年的支援時間(長期支援(Long Term Support),簡稱 LTS)。因此,你可以選擇堅持每年升級確保你使用的都是最新的尖端技術,或者你可以選擇每 2-3 年從上一個 LTS 切換到下一個 LTS。

關於升級助手

升級你的應用程式是一個複雜的過程,而從 .NET Framework 升級尤其複雜。我們在這方面不斷地進行原型設計和改進以簡化這一升級過程。過去,你可能使用過 Upgrade Assistant CLI 工具或 Microsoft Project Migrations。我們已經收到了你們的反饋,非常感謝大家為我們填寫的調查問卷、評論、建立的問題和功能請求!透過大家的反饋,我們得出結論,我們需要為 Visual Studio 中的每個專案型別提供統一的升級體驗。

現在,你可以在 Solution Explorer(解決方案資源管理器)中右鍵單擊你的專案並選擇“升級”,這樣就可以讓各種型別的 .NET 應用程式從任何初始版本(.NET Framework 或 .NET Core)升級。不要忘記先安裝擴充套件包。

升級助手的一般理念是它會幫忙處理機制,但根據你要升級的框架和專案型別,你可能會需要進行一些手動的後期處理。雖然我們會努力嘗試自動修復失敗的變化,但它無法檢測並修復所有的錯誤。因此,你可能需要進行一些額外的修改才能編譯程式碼,同時你需要進行徹底的測試以確保你的程式碼能夠繼續照常工作。

支援的應用程式型別

我們的目標是支援每一種 .NET 專案型別。我們認為此工具不僅是從 .NET Framework 到 .NET 6/7 的一次性升級,同時也會是未來能夠將你的應用程式升級到最新 .NET 的一種方式。除了更改目標框架版本外,該工具還能夠修改你的程式碼以修復錯誤的更改。這些是我們對未來的計劃,以下是該工具目前在最新版本中支援的內容:

已支援

  • ASP.NET
  • Class libraries
  • Console
  • WPF
  • WinForms

這些工作負載與 Upgrade Assistant CLI 工具相當。

即將推出

  • Xamarin 遷移到 .NET MAUI
  • UWP 遷移到 WinUI
  • WCF 遷移到 WCF Core

這些遷移型別正在開發中。你現在已經可以升級這些專案,但我們還沒有這些專案的程式碼修復程式。如果你現在就需要遷移這些專案型別,我們建議使用現有的升級助手命令列工具,該工具已經包含程式碼修復程式。Visual Studio 擴充套件包也將很快擁有這一程式。

不同的升級型別

升級助手支援3種升級型別。不同的專案型別對應不同的升級型別,因此你只會看到那些適合你的應用程式的選項。

In-place

選擇該升級型別,你的原始專案將立即升級。如果你在使用 source control(原始碼管理)並且更喜歡自己管理副本,例如,透過使用 branch (分支)管理,你可以選擇這一升級型別。

Side-by-side

有了這一升級型別,你的原始專案將保持不變,同時會有一個包含升級程式碼的副本新增到你的解決方案中。如果你的應用程式有許多升級後可能會損壞的依賴項,則選擇此升級型別會很方便。這樣你就可以檢查你的進度,而不必擔心應用程式無法構建。

Side-by-side incremental

這是 Web 應用程式的理想選擇。從 ASP.NET 升級到 ASP.NET Core 需要大量工作,有時還需要手動重構(因為這兩種技術非常不同)。Class Libraries 通常與 Web 應用程式一起使用,因此我們也為 Class Libraries 啟用了此類升級。增量升級會將 .NET 6/7 專案放在現有 .NET Framework 專案旁邊,並將在 .NET 6/7 專案中實現的端點路由到那裡,而所有其他呼叫將傳送到 .NET Framework 應用程式。透過這種方式,你可以將升級與功能開發結合起來,並將你的專案一一遷移到 .NET 6/7,同時也能確保不會破壞你的應用程式。這種方法最初是在 Microsoft Project Migrations 工具中構建的,你可以將 Visual Studio 中的升級助手視為 Microsoft Project Migrations 經過改進和擴充套件後的新版本。從 .NET Core 或 .NET 5 升級到 .NET 6/7 比從 .NET Framework 升級要容易得多,因此 .NET Core 或 .NET 5 的升級建議使用 In-place 升級型別。

在下表中,你可以按專案型別找到所有升級型別的狀態。

image.png

逐步升級

1.安裝 Visual Studio 升級助手擴充包

2.在 Visual Studio 的 Solution Explorer 裡右鍵單擊要升級的專案,選擇 Upgrade。

圖片

3.你將看到主頁,其中包含一些升級選項。 

圖片

不同的升級型別中介紹了要選擇的選項。

4.對於此示例,我選擇 In-place. Side-by-side 將非常相似,只需執行一些額外的步驟。side-by-side incremental 的其他功能在我們之前的部落格文章中進行了介紹。

5.然後,你需要選擇要升級到的框架。該工具將僅建議對你的專案型別有意義的選項。在我的示例中,它是一個 .NET Framework Class Library,因此它也建議使用 .NET Standard。

圖片

所有升級都是向前的,這意味著,例如,如果你的專案已在 .NET 6 上,則只會提供 .NET 7 及更高版本。如果你的計算機上未安裝所選的 SDK,系統將在下一步中提示你安裝它。只需點選連結,並在安裝 SDK 後返回升級。.NET Standard 僅建議用於面向 .NET Framework 的 Class Libraries。

6.現在該選擇要升級的元件了。最終,你將需要升級所有內容,但是如果你更喜歡逐步升級,則可以選擇要開始的螢幕。 

圖片

7.單擊 Upgrade selection 後,你將看到升級進度和升級完成後的報告。
 
圖片

現在,你可以直接從 Visual Studio 中升級 .NET 專案。請在本文下方留言,告訴我們使用體驗,以及你的專案還需要什麼。謝謝你的反饋!

點我前往原部落格瞭解更多資訊~

相關文章