重要提醒 1:此工具並非萬能,而是透過工具協助您將 .NET Framework 轉換成 .NET Core,大多數的專案或套件都需要再調整

重要提醒 2:此工具有可能直接進行轉換,若遇到無法轉移的程式會中斷且發出錯誤,雖然工具對於修改過檔案會轉換成.old 檔案,但請務必一定要備份原程式!! 

嘗試進行轉移前,可以考慮使用 .NET 可攜性分析器檢視可能轉換失敗的部分,請參考:.NET Portability Analyzer 介紹



安裝


1. 請先下載並安裝 .NET Core SDK 3.1

2. 開啟 PowerShell 或 cmd,透過下列指令安裝 try-convert






操作步驟

安裝完成後,你可以先透過 try-convert --help 指令檢視如何使用




透過說明,我們能夠知道透過 -p 參數可以指定專案 (.csproj) 位置;透過 -w 可以指定工作區位置(若沒有使用 -p 指定專案位置,則會自動搜尋專案方案進行轉換)。


我們透過下列指令進行轉換




因為我們的範例是 ASP.NET 網站,訊息很明確告至 System.Web 無法轉換 .NET Core 專案。主要原因在於跨平台關係,.NET Core 捨棄舊有又肥又大的 System.Web,將其功能拆分為較小的 lib,故 ASP.NET 網站除了 MVC 專案可以透過另起新的 ASP.NET Core MVC 專案進行程式碼轉貼並重構 (多數內容相似,但仍需微調修改),其餘的 ASP.NET網站應用程式無法直接轉換。您可以參考這篇:從 ASP.NET 移轉至 ASP.NET Core


若專案沒有使用到 System.Web,或許能成功轉移;多數複雜的專案只會有部分轉換,若遭遇無法轉移部份則會中斷,您可以藉此檢視已轉換部分,並手動修改無法轉移部份。下圖為另一個專案部分轉移的結果。




若整個專案失控,該工具也會備份你的檔案(如下圖),比較保險的方式請使用版本控管/備份還原程式。





參考資料

1. 移轉至 .NET Core 3.1 的範例

2. 從 .NET Framework 移植到 .NET Core 的總覽

3. 從 ASP.NET 移轉至 ASP.NET Core

4. ASP.NET Core 中的篩選條件

5. 適用于伺服器應用程式的 .NET Core 與 .NET Framework