本文記錄我的一個小項目從 Uno Platform 4 更新 Uno Platform 5 的一些變更和遷移方法,由於項目太小,可能踩到的坑不多
官方文檔: Migrating to Uno Platform 5.0
表揚一下官方,文檔寫的很詳細
Directory.Packages.props
所有的 Uno 相關包的版本更新:
- <PackageVersion Include="Uno.WinUI" Version="4.10.13" />
+ <PackageVersion Include="Uno.WinUI" Version="5.0.143" />
- <PackageVersion Include="Uno.WinUI.Lottie" Version="4.10.13" />
+ <PackageVersion Include="Uno.WinUI.Lottie" Version="5.0.143" />
- <PackageVersion Include="Uno.WinUI.RemoteControl" Version="4.10.13" />
+ <PackageVersion Include="Uno.WinUI.RemoteControl" Version="5.0.143" />
- <PackageVersion Include="Uno.WinUI.Skia.Gtk" Version="4.10.13" />
+ <PackageVersion Include="Uno.WinUI.Skia.Gtk" Version="5.0.143" />
- <PackageVersion Include="Uno.WinUI.Skia.Linux.FrameBuffer" Version="4.10.13" />
+ <PackageVersion Include="Uno.WinUI.Skia.Linux.FrameBuffer" Version="5.0.143" />
- <PackageVersion Include="Uno.WinUI.Skia.Wpf" Version="4.10.13" />
+ <PackageVersion Include="Uno.WinUI.Skia.Wpf" Version="5.0.143" />
Skia.WPF
這裏有大改的部分,不僅僅只是修改命名空間
之前的 WpfHost 是放入到具體的 WPF 的窗口裏面的,現在更新版本是直接放入到 App 級的。遷移步驟如下
- 在
App.xaml
文件裏面刪除StartupUri="Wpf/MainWindow.xaml"
屬性的配置 - 刪除
MainWindow.xaml
和MainWindow.xaml.cs
文件 - 在
App.xaml.cs
裏添加以下代碼到構造函數
public App()
{
var host = new WpfHost(Dispatcher, () => new AppHead());
host.Run();
}
如果沒有更改,將會在運行看到 If you are seeing this, make sure to follow the "Migrating WpfHost" section of Migrating from previous releases article in the Uno Platform documentation at https://aka.platform.uno/uno5-wpfhost-migration. WpfHost is used at the application level instead of window level starting Uno Platform 5.0.
提示
Skia.Framebuffer
更換了命名空間,從原本的 Uno.UI.Runtime.Skia.FrameBufferHost
變更爲 Uno.UI.Runtime.Skia.Linux.FrameBuffer.FrameBufferHost
命名空間下的類型
只需加上 using Uno.UI.Runtime.Skia.Linux.FrameBuffer;
即可
Skia.Gtk
更換了命名空間,從原本的 Uno.UI.Runtime.Skia.GtkHost
變更爲 Uno.UI.Runtime.Skia.Gtk.GtkHost
命名空間下的類型
只需加上 using Uno.UI.Runtime.Skia.Gtk;
即可