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. 力扣208. 实现 Trie (前缀树)

    原题 以下是我的代码,就是简单的字符串操作,可以ac但背离了题意,我之前没接触过Trie 1 class Trie: 2 3 def __init__(self): 4 ""&qu ...

  2. 原始提货单OBL

    转: 原始提货单OBL 什么是原始提货单OBL? 原始提货单Original Bill of Lading,简称OBL.是货运单据或运输合同,可作为货物标题和装运收据.该文件确认承运人已收到货物.签发 ...

  3. dubbo实战之二:与SpringBoot集成

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. MySQL深入研究--学习总结(3)

    前言 接上文,继续学习后续章节.细心的同学已经发现,我整理的并不一定是作者讲的内容,更多是结合自己的理解,加以阐述,所以建议结合原文一起理解. 第九章<普通索引和唯一索引,如何选择> 从查 ...

  5. 13. Vue CLI脚手架

    一. Vue CLI 介绍 1. 什么是Vue CLI? Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.Vue CLI 致力于将 Vue 生态中的工具基础标准化.它确保了各种构建工 ...

  6. addEventListener的第三个参数详解

    示例代码 element.addEventListener("mousedown", func, { passive: true });  element.addEventList ...

  7. P2014 选课 题解(树形DP)

    题目链接 P2014 选课 解题思路 树形动归,用\(f[i][j]\)表示以\(i\)为根,\(j\)个子节点(不包括自己)的最大学分 首先根据题意建图,用根节点\(0\)将森林连成树. 从根节点开 ...

  8. API管理工具

    开源的api文档管理系统 api文档 php 在项目中,需要协同开发,所以会写许多API文档给其他同事,以前都是写一个简单的TXT文本或Word文档,口口相传,这种方式比较老土了,所以,需要有个api ...

  9. 涂鸦基于OAuth2在开发者平台上的探索与实践

    前言 开发授权(OAuth2)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资料(如照片.视频.联系人列表),而无需将用户名和密码提供给第三方应用. OAuth2允许用户提供一 ...

  10. Java8的新特性--Optional

    目录 Optional 一.Optional类是什么? 二.Optional类常用的方法 1. 创建Optional实例 1.1 Optional.of(T) 1.2 Optional.empty() ...