日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

将传统 WPF 程序迁移到 DotNetCore 3.0

發布時間:2023/12/4 asp.net 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将传统 WPF 程序迁移到 DotNetCore 3.0 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

由于歷史原因,基于?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 = "hippiezhou@outlook.com" };
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

原文地址:https://www.cnblogs.com/hippieZhou/p/10661181.html

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?

總結

以上是生活随笔為你收集整理的将传统 WPF 程序迁移到 DotNetCore 3.0的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。