將WPF應(yīng)用程序遷移到 .NET
本主題介紹如何將使用 DevExpress 控件將WPF應(yīng)用程序升級(jí)到 .NET,一旦切換目標(biāo)平臺(tái)您就可以利用框架的高級(jí)功能。
開(kāi)始之前
先決條件
- .NET
- 安裝了.NET desktop development工作負(fù)載 的Visual Studio 2019 version 16.3
遷移應(yīng)用程序
DevExpress統(tǒng)一組件安裝程序隨 .NET Core Migration Tool一起發(fā)布。
在解決方案資源管理器中選擇要轉(zhuǎn)換的項(xiàng)目,然后在Visual Studio的DevExpress菜單中選擇Migrate the Current project to .NET Core:
.NET Core Migration Tool 使用.NET try-convert tool 將您的項(xiàng)目轉(zhuǎn)換為sdk風(fēng)格的格式,并將DevExpress程序集引用替換為NuGet包引用,選擇所需的.NET 版本并單擊Convert。
轉(zhuǎn)換完成后,.NET Core Migration Tool 將顯示嘗試轉(zhuǎn)換工具的輸出,單擊Finish關(guān)閉工具并在提示時(shí)重新加載項(xiàng)目。
提示:
您需要安裝.NET 5.0 SDK才能運(yùn)行此轉(zhuǎn)換工具。
由.NET Core Migration Tool 轉(zhuǎn)換的庫(kù)類(lèi)型項(xiàng)目的目標(biāo)是netstandard2.0。
考慮可移植性限制
嘗試重構(gòu)代碼來(lái)減少對(duì)缺失api的調(diào)用次數(shù),尋找具有所需功能的替代API。
更新非DevExpress NuGet包
DevExpress NuGet包兼容.NET和.NET Framework平臺(tái)。
檢查項(xiàng)目中使用的非devexpress NuGet包是否與.NET兼容,以及是否有更新的兼容版本。
如有必要,更新項(xiàng)目以引用最新的包版本。
提示:
即使Visual Studio沒(méi)有顯示任何編譯時(shí)錯(cuò)誤,也要執(zhí)行此步驟。如果您使用未針對(duì) .NET運(yùn)行時(shí)進(jìn)行測(cè)試的包構(gòu)建應(yīng)用程序,則可能會(huì)遇到運(yùn)行異常。
修復(fù)構(gòu)建問(wèn)題
如果Visual Studio顯示構(gòu)建錯(cuò)誤,請(qǐng)根據(jù)輸出對(duì)代碼進(jìn)行重構(gòu),直到可以成功編譯為止。
提示:
- 使用Microsoft.Windows.Compatibility 包訪問(wèn)windows特定的APIs:Registry、WCF Client、ACL。
- 使用 conditional compilation來(lái)編寫(xiě) .NET 和 .NET 框架中不同的一小部分代碼。
已知限制
1.Visual Basic項(xiàng)目在轉(zhuǎn)換后顯示以下警告:
.vbproj uses code generators which will not be handled by try-convert. You can edit your vbproj to add support or remove these dependencies.
2.默認(rèn)的 .NET 平臺(tái)是AnyCPU,如果您的 .NET 框架解決方案只配置了x86平臺(tái),請(qǐng)?jiān)陧?xiàng)目文件中手動(dòng)指定平臺(tái):
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <Platforms>x86;AnyCPU</Platforms> ... </PropertyGroup> ... </Project>
測(cè)試應(yīng)用程序
運(yùn)行并測(cè)試升級(jí)后的應(yīng)用程序。請(qǐng)記住,即使應(yīng)用程序是在沒(méi)有編譯時(shí)錯(cuò)誤的情況下構(gòu)建的,運(yùn)行時(shí)異常也是可能的。