VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
  • ASP.net教程之將傳統 WPF 程序遷移到 DotNetCore 3.0

  • 2019-04-18 13:51 來源:未知
 

魔兽世界wow www.geyjm.icu

介紹#

由于歷史原因,基于 Windows 平臺存在著大量的基于 .NetFramework 開發的 WPF 和 WinForm 相關程序,如果將這些程序全部基于 DotNetCore 3.0 重寫一遍顯然是不現實的,但是 DotNetCore 是未來發展的趨勢。所以本文通過以 WPF 為例,介紹一下如何將傳統 WPF 遷移到 DotNetCore 3.0 上。

環境#

我在之前的一篇文章 DotNetCore 3.0 助力 WPF 開發 有提到過,如果想開發基于 DotNetCore 3.0 的 WPF 程序,我們需要安裝 Visual Studio 2019 和 DotNetCore 3.0 SDK,這兩個條件是必須具備的。同樣的,我們做框架遷移,這兩個條件同樣也是必須的。

注:為了不必要的麻煩,建議使用 Visual Studio 2019 來進行遷移工作。

實驗#

首先,我們通過 Visual Studio 2019 創建一個傳統的基于 .NetFramework 的 WPF 程序。如下圖所示:

項目創建完成之后,你會發現還是那個屬性的味道,沒有什么變化。嘗試編譯運行,也是沒什么問題。

更新 NuGet#

在做遷移之前,我們需要確認一下我們的項目是否引用了 NuGet 上的一些包,如果引用了,請務必更新至最新版本。雖然這不是必須的,但是卻是有必要的,避免在遷移過程中出現一些未知錯誤。

這里,我引用一下 Newtonsoft.Json 作為示例。在 MainWindow.xaml.cs 中嘗試使用


		
Copy
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } protected override void OnContentRendered(EventArgs e) { var user = new User { Name = "hippieZhou", Eamil = "[email protected]" }; var json = Newtonsoft.Json.JsonConvert.SerializeObject(user); Trace.WriteLine(json); base.OnContentRendered(e); } } public class User { public string Name { get; set; } public string Eamil { get; set; } }

編譯運行程序,可以正常編譯運行和執行??刂鋪ㄒ彩涑雋?User 對象也能正確序列化。

使用 Portability Analyzer#

.NET Portability Analyzer 工具是用于檢測我們當前的 WPF 程序中使用的所有 API 是否支持遷移到 DotNetCore 3.0 上。運行該工具后如下圖所示:

點擊 Browser 按鈕,將我們的項目目錄加載進來,之后點擊 Analyze,等分享完成之后,點擊 Open Report 即可查看檢測結果,如下圖所示:

從上圖中,我們可以看到,我們的程序當前的框架為 .NetFramework 4.7.2,當前使用的程序集 在 DotNetCore 3.0 受支持率為 100%,這就表明我們的程序可以無縫遷移到 DotNetCore 上了。

遷移 packages.config#

如果我們的程序引用了 NuGet 上的包,那么 VS 會為我們創建一個 packages.config,這個文件在 DotNetCore 中不受支持,所以我們需要將它修改為受支持的類型。

鼠標右鍵它,然后點擊 Migrate packages.config to PackageReference 即可,如下圖所示:

遷移 XXX.csproj#

這里,我們修改我們示例程序中的 WpfApp1.csproj,在傳統的 .csproj 中會有一大堆配置,這些配置方式在 DotNetCore 中同樣不適用了。因此,我們需要將我們的內容修改一下,如下所示:


		
Copy
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <UseWPF>true</UseWPF> </PropertyGroup> <ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="12.0.1" /> </ItemGroup> </Project>

重新加載項目后,會如下圖所示:

接著,我們需要刪除掉項目中的 Properties,操作完畢后嘗試重新編譯運行,如果不出意外的話,應該是可以正常執行的。

最后,我們可以對比一下這種遷移后的項目結構和直接通過 DotNetCore 創建的項目結構之間的差別,如下圖所示:

總結#

需要補充的一點是,目前在 VS2019 中創建 DotNetCore 3.0 的 WPF 項目時, XAML 的設計視圖還是不可用的狀態,所以這個需要注意一下。

DotNetCore 是未來發展的趨勢,由于目前還是預覽版,所以我們可以先試著做一些技術儲備,等待正式版出來后,我們就可以很快的遷移過來。

相關參考#

  • getting-started-net-core-3-create-wpf-application
  • how-to-port-desktop-applications-to-net-core-3-0
  • are-your-windows-forms-and-wpf-applications-ready-for-net-core-3-0
  • Prerequisites for .NET Core on Windows

作者:hippieZhou

出處:https://www.cnblogs.com/hippieZhou/p/10661181.html

本站使用「署名 4.0 國際」創作共享協議,轉載請在文章明顯位置注明作者及出處。


相關教程