天津 企业网站建设,西装定制,分销商城网站建设,客户资源买卖平台1. WinUI 3在微软 Build 2020 开发者大会上#xff0c;WinUI 团队宣布可公开预览的 WinUI 3 Preview 1#xff0c;它让开发人员可以在 Win32 中使用 WinUI。最终 XAML 的新功能不再和 Windows SDK 绑定#xff0c;所有新的 XAML 功能都将作为 WinUI 的一部分发布。作为 OS 的… 1. WinUI 3在微软 Build 2020 开发者大会上WinUI 团队宣布可公开预览的 WinUI 3 Preview 1它让开发人员可以在 Win32 中使用 WinUI。最终 XAML 的新功能不再和 Windows SDK 绑定所有新的 XAML 功能都将作为 WinUI 的一部分发布。作为 OS 的一部分发布的现有 UWP XAML API 将不会再收到新的功能更新。但是它们会在 Windows 10 支持生命周期内继续收到安全更新和关键修复程序。2. WinUI 3 第三个预览版微软在上个月11 月发布了 WinUI 3 Preview 3具体新增的特性和功能可以看文章最后给出的参考链接。这里我列出我比较重视的新特性ARM64 支持对工具/开发人员的改进实时可视化树 热重载实时属性资源管理器及类似工具Intellisense 现适用于 WinUI 3MRT 核心支持这可使应用在启动时速度更快、更轻质还能加快资源查找速度。性能改进这些都是预期之内的改进。在我半年前写的文章《WinUI 3 试玩报告》提到 Preview 1 的开发体验和性能都未能令人满意。这次改进了开发体验虽然还是没有设计视图但智能感知、实时可视化树、热重载等功能已经可以让人在 Visual Studio 上进行 WinUI 3 的开发以前都是在 UWP 项目中写好再复制到 WinUI 项目。下面 WinUI 3 公开的路线图从这图可以看出 WinUI 3 Preview 3 在功能上已经和正式版十分接近恐怕正式版不会再添加很多值得玩的新功能所以如果要尝尝鲜的话现在正适合。3. 试玩 WinUI 3 Preview 3要试玩 Preview 3你需要具备以下条件和环境确保你的开发计算机上已安装 Windows 10 版本 1803内部版本 17134或更高版本。安装 Visual Studio 2019 版本 16.9 预览版安装 Visual Studio 时包含以下工作负载.NET 桌面开发这也将安装 .NET 5通用 Windows 平台开发安装 WinUI 3 预览版 3 VSIX 包爱与勇气与希望安装完所有东西后下一步要做的和上次没什么区别在新建项目的界面里选择 C# 的 “Blank App, Packaged (WinUI in Desktop)” 项目并选择对应的 Windows 平台创建项目。再下一步你就需要拿出你的爱与勇气与希望去网上与其他微软粉丝交流怎么编译这个刚刚创建一行代码都没改过就报错的全新的 WinUI 3 项目Cannot build WinUI3 Preview3 desktop package project in fresh installed VS #3635Why do you waste devs time with unusable releases ? #3645有些人第一次就能编译通过并运行那真是太令人高兴了 已经没什么好害怕的了奇迹、魔法都是存在的。4. 性能改进经过了一段痛苦和挣扎我终于可以运行 WinUI 3 Preview 3 了。现在制约我将来使用 WinUI 3 的要素只剩下开发体验和性能。开发体验方面应该不用太担心将来 WinUI 3 正式版的开发体验至少不会比 UWP 差UWP 都忍过来了已经没有什们能难到我了。另一个我比较在意的地方是性能表现这方面还是个未知数。本来我还期待 WinUI 3 的性能只比 UWP 差一点点可是 Preview 1 的实际表现让人大跌眼镜所以在这个预览版特地提到性能改进让我很期待于是我再次测试了它的性能。首先用和 《WinUI 3 试玩报告》同样的代码在 Preview 3 进行了测试结果如下CPU内存GPUWPF .NET Framework 4.8126076WPF .NET 5.0128572UWP32836WinUI Preview 156595WinUI Preview 364576虽然 Preview 3 依然不够流畅但起码 GPU 占用率可以和 WPF 不相上下。这个测试证明了 WinUI 3 的性能确实有了改进如果单看这个测试的话 WinUI 3 的性能至少比 WPF 好。可是这样还远远不够好于是我又试了另一种测试。这次我找到最近写的 《使用离散式关键帧播放动画》里的散步猫动画。在这个测试中WPF 和 WinUI/UWP 的 Xaml 部分完全一样只是动画的代码部分稍微有些出入Copy// Uwp and WinUI
var transform (sender as Image).RenderTransform as CompositeTransform;
var keyFrames new DoubleAnimationUsingKeyFrames();
Storyboard.SetTarget(keyFrames, transform);
Storyboard.SetTargetProperty(keyFrames, nameof(CompositeTransform.TranslateY));// Wpf
var transform (sender as Image).RenderTransform as TranslateTransform;
var keyFrames new DoubleAnimationUsingKeyFrames();
Storyboard.SetTarget(keyFrames, sender as Image);
Storyboard.SetTargetProperty(keyFrames, new PropertyPath(RenderTransform.Y));
当然一只猫不足以测试性能于是我决定同时撸 100 只猫分别在 .Net Framework 4.8、.Net 5、Uwp、WinUI Preview 3 这 4 个平台进行测试我的测试环境如下i7-6820HQ16G 内存集成显卡1920 * 1080 分辨率100%拉伸Windows 10 20H2测试结果如下CPU内存GPUWPF .NET Framework 4.8317721WPF .NET 5.03330021UWP1255WinUI Preview 32466WPF .Net Framework 4.8结果在预期中177 MB 的内存占用有些高但个方面都很稳妥。WPF .Net 5.0WPF 和 WPF 之间的体质不能一概而论WPF .Net 5.0 曾在极度普通的情况下占用了 3300 MB的内存吓了我一跳这种事绝对很奇怪啊只不过 100 只猫而已是不是撸不起UWP表现也太优异了吧可能是我的错觉不过 UWP 也并不是没有问题只要猫的数量再多些就会报 “Layout cycle detected. Layout could not complete.” 这个错误。WinUI 3性能基本和 UWP 保持一致内存占用高些。也就是说某些情况下 WinUI 3 的性能能达到 UWP 的水平那真是太令人高兴了。可惜的是同样会在猫的数量增加后报 “Layout cycle detected. Layout could not complete.” 这个错误而且 WinUI 运行起来有闪烁的现象5. 结论WinUI 3 Preview 3 功能、性能、开发体验等各方面都有所提升尤其性能上某些情况下可以达到 UWP 的水平但仍有奇怪的问题。总的来说目前 XAML 平台各有各的问题没一个能打的。不过 XAML 仍是我最好的朋友期待下一个版本的 WinUI 能给我惊喜。最后微软更新了 WinUI 3 的 Release Roadmap修改了 WinUI 3 的发布计划。希望正式版快些到来吧不然 MAUI 要加入战局了。6. 参考Announcing WinUI 3 Preview 3! ✨????https://github.com/microsoft/microsoft-ui-xaml/issues/3620Windows UI 库 3 预览版 32020 年 11 月https://docs.microsoft.com/zh-cn/windows/apps/winui/winui3/?WT.mc_idWD-MVP-5003763Windows UI Library Roadmap https://github.com/microsoft/microsoft-ui-xaml/blob/master/docs/roadmap.md#winui-30-feature-roadmap7. 测试代码https://github.com/DinoChan/WinUI_Preview3_Performance_Test