2021年3月的时候,Win UI 3终于来到了第一个稳定的支持版本,可用于创建发布到Micosoft Store的应用。据某软的说法,这个叫WinUI 3 Project Reunion 0.5的版本,是可以被用于生产了,但按某软的尿性,一般1.1版本会比较靠谱……
首先我们要梳理一下Win UI 3和Project Reunion之间的关系,某软的改名部真是让人糟心啊,该出手的时候却和被裁员了一样……

WinUI 3是WinUI 2的后续版本,核心的不同之处,除了版本号大上一位以外,就是WinUI 3支持desktop/Win32程序,而WinUI 2仅支持UWP。但也别想太多,想要用上WinUI 3,得先升级到.NET 5,以及最低版本号为1809的Windows 10。

Project Reunion就更让人迷惑了,相信我这货1.0的时候绝对会改名。简单理解Project Reunion定义了面向次世代的Windows App Development的工具集,只有钦定的API和Library才能被归属到Project Reunion之下。和同一套代码跑遍所有Win10的UWP不同,这次的目标是,只要是属于Project Reunion的Library,就能被以往的WinForms,WPF和C++/Win32的技术所使用。可以想象,被迫使用了新API的旧框架们,不得不迁移到最新的Win10,甚至Microsoft Store,简直机智啊!
下面一张图是Project Reunion对以MSIX格式打包,通过Store发布的应用程序,对应的Roadmap。
可以看到在今年底就会有正式版了。但是以MSIX打包的形式,在使用体验上我个人推测和现在的DesktopBridge的使用并无太大出入,无非就是API的更新。(个人不负责任的推测)

第二张图就有点意思了,这是对非打包格式的应用程序的支持情况。商店这种东西,个人消费者可能喜欢,但是对软件开发商来说,等于是脖子上的枷锁,对于公司IT而言更是法外之地。所以这一块的内容在未来确实很有看点,某软从Win8开始做商店,结果连游戏都卖不过Steam,何其悲剧!这次以何种形式来支持非打包的桌面应用,让我们拭目以待。

扯得太远让我们回到WinUI 3 Project Reunion 0.5。当前这个版本可用于创建发布到商店的应用,但他只支持desktop,UWP的支持仍然是preview。同时虽然支持在VS2019 16.9以上版本中使用,但是全部特性比如热重载和实时可视化树还要等16.10版本。可以理解为库本身已经准备好了,但是配套还没有完善。
在安装Project Reunion 0.5 VSIX包之后,我们就可以在VS2019中使用WinUI项目模板创建WinUI3应用。

同时在WinUI3的Item Template中,我们可以看到下面这些项目,一股熟悉的气息扑面而来。其实某软在这些年,至少桌面端XAML的技术延续是非常顺滑的。根本不存在抛弃老人,让他们35岁去送外卖这种事情。有兴趣的小伙伴来入坑Windows开发啊,三十年河东河西,万一哪天再次雄起了呢?这里推荐两篇Docs & Learn上HelloWorld级别的课程,包教包会那种。
编写首个 Windows 10 应用 - Learn | Microsoft Docs
Windows 10 开发简介 - Learn | Microsoft Docs

总体来说,WinUI3是一个巨大的升级,从WinUI2的通过NuGet包来使用的形式,升级为整个全新的项目模板。成为了和UWP,WPF项目模板对等的存在。本篇我们仅仅从概念上介绍了WinUI 3和Project Reunion,下一篇或许我们可以尝试去创建WinUI 3的项目来体验如何进行次世代Windows应用程序的开发。

参考链接:
Windows UI 库 3 - Project Reunion 0.5(2021 年 3 月)
使用 Project Reunion 0.5 构建桌面 Windows 应用

.NET 5学习笔记(12)——WinUI 3 Project Reunion 0.5的更多相关文章

  1. 春风十里不如你,全新Windows UI 3(WinUI 3) 的第一个实现Project Reunion 0.5

    什么是WinUI Windows UI库 (WinUI) 是适用于 Windows 桌面应用程序和 UWP 应用程序的本机用户体验 (UX) 框架. WinUI is a user interface ...

  2. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  3. Ext.Net学习笔记12:Ext.Net GridPanel Filter用法

    Ext.Net学习笔记12:Ext.Net GridPanel Filter用法 Ext.Net GridPanel的用法在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法. Filter是用来过 ...

  4. SQL反模式学习笔记12 存储图片或其他多媒体大文件

    目标:存储图片或其他多媒体大文件 反模式:图片存储在数据库外的文件系统中,数据库表中存储文件的对应的路径和名称. 缺点:     1.文件不支持Delete操作.使用SQL语句删除一条记录时,对应的文 ...

  5. golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题

    golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ...

  6. Python3+Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)'''from ...

  7. springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定

    springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定 标签: springmvc springmvc学习笔记12-springmvc注解开发之包装类型參数绑定 需求 实现方 ...

  8. 并发编程学习笔记(12)----Fork/Join框架

    1. Fork/Join 的概念 Fork指的是将系统进程分成多个执行分支(线程),Join即是等待,当fork()方法创建了多个线程之后,需要等待这些分支执行完毕之后,才能得到最终的结果,因此joi ...

  9. matlab学习笔记12单元数组和元胞数组 cell,celldisp,iscell,isa,deal,cellfun,num2cell,size

    一起来学matlab-matlab学习笔记12 12_1 单元数组和元胞数组 cell array --cell,celldisp,iscell,isa,deal,cellfun,num2cell,s ...

随机推荐

  1. CSS:CSS基础

    和 HTML 类似,CSS 也不是真正的编程语言,甚至不是标记语言.它是一门样式表语言,这也就是说人们可以用它来选择性地为 HTML 元素添加样式. CSS规则集 选择器(Selector):元素的名 ...

  2. C++共享数据保护机制

    下面随笔说明C++共享数据保护机制. 共享数据的保护 对于既需要共享.又需要防止改变的数据应该声明为常类型(用const进行修饰). 对于不改变对象状态的成员函数应该声明为常函数. (1)常类型 ①常 ...

  3. 人脸检测数据源制作与基于caffe构架的ALEXNET神经网络训练

    本篇文章主要记录的是人脸检测数据源制作与ALEXNET网络训练实现检测到人脸(基于caffe). 1.数据获取 数据获取: ① benchmark是一个行业的基准(数据库.论文.源码.结果),例如WI ...

  4. LeetCode-层数最深叶子结点的和

    层数最深叶子结点的和 LeetCode-1302 这里可以采用上一题中求解二叉树的深度的方法. 因为需要记录最深结点的值的和,所以这里可以边求和,如果遇到不符合最深结点时再将和sum=0. /** * ...

  5. 腾讯云发布存储一体机TStor,打通全面上云“最后一公里”

    随着云计算.大数据.人工智能等技术的发展,各行各业加速数据化转型,数据容量以前所未有的速度增长,本地存储难以适应数据的指数式增长. 另一方面,公有云因其易扩展.低成本.安全稳定的特点,逐渐被企业广泛应 ...

  6. arcgis10.2 全套安装教程

    一.安装LicenseManager 1.运行在licensemanager目录下的Setup.exe 2.安装完成后点击stop停止服务,然后点击"OK" 3.选择ArcGIS1 ...

  7. ASP.NET Core中间件初始化探究

    前言 在日常使用ASP.NET Core开发的过程中我们多多少少会设计到使用中间件的场景,ASP.NET Core默认也为我们内置了许多的中间件,甚至有时候我们需要自定义中间件来帮我们处理一些请求管道 ...

  8. get和post的区别主要有以下几方面

    1.url可见性: get,参数url可见: post,url参数不可见 2.数据传输上: get,通过拼接url进行传递参数: post,通过body体传输参数 3.缓存性: get请求是可以缓存的 ...

  9. 记一次scrapy-redis爬取小说网的分布式搭建过程

    scrapy-redis简介 scrapy-redis是scrapy框架基于redis数据库的组件,用于scrapy项目的分布式开发和部署. 有如下特征: 分布式爬取 可以启动多个spider工程,相 ...

  10. P1048_采药(JAVA语言)

    思路:动态规划的背包问题.把时间看作重量,转换为01背包问题求解. 题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出 ...