1. 程式人生 > 實用技巧 >將 .NET Framework 專案轉換為 .NET Standard 專案

將 .NET Framework 專案轉換為 .NET Standard 專案

.NETFramework專案轉換為 .NETStandard專案

獨立觀察員 2020 年 8 月 20 日

如今 .NETCore是未來發展的主流(至少在 .NET 5 釋出之前),而我們如果要改造一個專案為 .NETCore專案,則它引用的專案應當先改造為 .NET Standard 專案。

下表給出了每種平臺支援指定的 .NET Standard 版本的最低版本(參考):

簡單說明一下:.NET Standard 2.0 支援 .NET Core 2.0 和 .NETFramework4.6.1(最好使用 4.7.2 或更高),所以使用這些版本的話就不用進行多平臺配置了。.NET Standard 2.1 開始就和.NET Framework 不相容了,這種情況還是要多平臺配置。(關於多平臺配置,後面會提到)

言歸正傳,我們如何將 Framework 類庫專案轉換為 Standard 類庫專案呢?答案就是使用dotnet try-convert工具。

安裝前先要確保你已經安裝了 .NET CoreSDK(get ithere),然後在工作列搜尋 “cmd”,以管理員身份執行:

使用如下命令安裝或解除安裝:

:: 安裝:
dotnet tool install -g try-convert
:: 解除安裝:
dotnet tool uninstall -g try-convert

我已經安裝過了:

接下來在專案路徑開啟 cmd,使用如下命令進行轉換:

try
-convert

轉換前:

轉換後:

可以看到已備份了舊的專案檔案,並修改出了新的專案檔案。這時我們點選 VS 的彈框過載專案即可(沒有開啟 VS 則無此操作):

由於使用了新的專案檔案,我們在專案上右鍵,就能看到 “編輯專案檔案” 的選項:

開啟後發現,專案型別還是 .NET Framework 4.5.2(net452):

在專案上右鍵–屬性,可以看到目標框架也還是以前的:

那麼我們接下來就來進行 “多平臺配置” 吧。

首先,在專案檔案中將 TargetFramework 改為 TargetFrameworks (加個 “s”),然後裡面的內容加上 “netstandard2.0” ,並與之前的內容以分號隔開,修改後如下:

然後我們關閉 VS 並重新開啟(重新載入解決方案),再次檢視專案屬性,可以看到目標框架裡沒有指定特定的內容了,生成一下也沒什麼錯誤,說明配置成功了。

另外,新式專案的依賴項組織形式也發生了變化:

如果解決方案裡有多個專案需要轉換,也可以定位在解決方案目錄,然後執行轉換命令(try-convert),已轉換的專案會自動跳過,剩餘專案將自動批量轉換:

通過命令輸出,我們還得知了新式的專案型別叫做 “.NET SDK-style project” ,哈哈,漲姿勢了。

如果 .NET Standard 依賴項中出現了黃色三角形:

可以看看該項是否需要,不需要的可以移除。另外,在開啟的類檔案標籤下方可以手動選擇當前在什麼框架下檢視:

如果有引用在 .NET Standard 框架下沒有,可在 “包” 上右鍵–“管理 NuGet 程式包”:

然後搜尋並安裝:

好了,大致就是這些了。

參考:

從 .NET Framework 移植到 .NET Core 的概述

同步首發:

http://dlgcy.com/net-framework-to-net-standard/

微信訂閱號