Project Reunion作为面向次世代Windows App Development的统一工具集。在2021年11月,第三个稳定版正式以1.0的版本号发布的同时,改名部果断出手,以全新的名称Windows App SDK迎接2022年以及Windows 11。
在某软推荐UWP开发者迁移到Windows App SDK之后,曾有一波“放弃”UWP的新闻。其实在经历了WPF,Silverlight,UWP这些长得挺像(XAML)的UI框架后,开发者升级到Windows App SDK和WinUI 3并不是一件很困难的事情。毕竟这凑齐了XAML的四样写法,写代码的事,能叫放弃么?空气中顿时充满了快活的味道……
下面谈谈Windows App SDK中绕不开的WinUI 3,WinUI 3作为Windows App SDK中最为核心和关键的部分,即下一代Windows desktop app开发的原生UI框架,包括托管C#和非托管的C++以及Win32 API。可以理解为某软对过去二十年desktop开发技术的反思和集大成者。
随着版本的迭代,当前WinUI 3的定位较早先有了一些变化。和WinUI 2专门为UWP服务不同,WinUI 3现在不想和UWP扯上关系。

早先预览版中对UWP的支持描述已踪迹难寻,可以理解为缩小了支持的范围,集中精力Make Desktop Great Again!根据当前版本的使用体验,有两点值得注意。首先就1.0的版本而言,仍有诸如CameraCaptureUI,InkCanvas和PrintManager等在UWP时代颇为实用的组件没有替代品。其次就是Win10 1809+的版本限制,可以想象对跑在Win7甚至更老系统上的软件而言,升级近似完全重写。
Windows App SDK 1.0非常有意思的一点,既是对Unpackaged App的支持。和之前无责任猜测的不同,这次对Unpackaged App的支持非常彻底,使用起来也很方便。Unpackaged App不再通过MSIX格式打包上传商店,而是彻底回归到.exe或者.msi的安装方式。
接着我们用VS 2022来体验创建久违了的exe程序。除了VS 2022以外,我们额外需要安装Windows App SDK runtime and MSIX packages

下载完成解压后,根据电脑的环境选择对应的安装文件。例如我是64位的Win11系统,就选择WindowsAppSDK-Installer-x64,双击后会自动完成安装。

在完成以上准备后,在VS2022中创建Blank App, Packaged(WinUI 3 in Desktop)工程。完成后如下图,经历过UWP DesktopBridge创伤的同学可能会发现,即使是Packaged App,也不再需要额外的Packaging Template工程了。简洁单一的解决方案界面让人心情愉悦很多。

然后让我们鼠标右键选择编辑工程文件,在工程文件编辑窗口中,添加WindowsPackageType节点并设置为None。

<WindowsPackageType>None</WindowsPackageType>

最后一步则是在开始Debug的下拉列表中,选择Unpackaged启动配置文件。至此我们的第一个使用Windows App SDK的exe程序就做好了。点击开始Debug的按钮或按下F5即可成功运行。

故名思意Unpackaged App我们可以直接在设置的Output目录,或者Publish目录通过双击exe的方式运行。如下图所示,在成功发布之后,即可复制整个publish目录到其他Win10 1809+的机器上运行。

美中不足当前版本会在pulish目录包含大量的Dll文件。同时运行exe程序的机器也需要安装Windows App SDK Runtime。恍惚间又回到了二十年前在XP安装.NET Runtime的场景,历史真是一个轮回。

面向次世代的Windows App SDK 近况的更多相关文章

  1. New Windows 10 SDK - Multi-instance UWP apps

    概述 前面一篇 About Windows 10 SDK Preview Build 17110 中,我们简单介绍了 Multi-instance UWP Apps,今天结合开发过程详细讲解一下. 在 ...

  2. 如何在VMware中安装Windows Phone SDK 8.0 (支持模拟器调试)

    相信很多开发者目前的系统还是Win7或Mac,一般不会为了开发某个程序而重装系统,所以我们就需要用到VMware这类的虚拟机来模拟预期的开发环境.在开始介绍前,给大家说明下我当前的软硬件环境,本文所讲 ...

  3. 使用 Portable Class Library(可移植类库)开发 Universal Windows App

    今天在这里跟大家聊聊关于 Windows Universal 应用夸平台的问题,首先Universal Windows App的定义相信大家已经有所了解了(如果你是一个刚刚接触 Universal A ...

  4. About Windows 10 SDK Preview Build 17110

    在 Windows Developer Day 活动同时,微软正式 Release 了 Windows 10 SDK Preview Build 17110. Windows 10 SDK Previ ...

  5. New Windows 10 SDK - Toast Notification

    概述 Toast Notification 在 UWP App 中有很重要的作用,能够很大程度上增强 App 和用户之间的沟通,比如运营推广活动.版本更新.提醒类任务提示等等.Toast Notifi ...

  6. Windows10开发手记-Windows App Certification Kit使用教程

    最近有同学通过MVP的渠道询问我Windows 10应用提交审核前是否有工具能够像win7一样做App兼容性测试,其实Windows SDK已经继承了一套优秀的App测试认证工具,这可以帮助我们快速通 ...

  7. 无责任Windows Azure SDK .NET开发入门(二):使用Azure AD 进行身份验证

    <編者按>本篇为系列文章,带领读者轻松进入Windows Azure SDK .NET开发平台.本文为第二篇,将教导读者使用Azure AD进行身分验证.也推荐读者阅读无责任Windows ...

  8. 修复Windows 10 SDK 17763中NavigationView上的AcrylicBrush丢失

    原文 修复Windows 10 SDK 17763中NavigationView上的AcrylicBrush丢失 Microsoft发布了新版本的Windows 10 UWP SDK Build 17 ...

  9. 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native

    [源码下载] 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native 作者:web ...

随机推荐

  1. 【LeetCode】412. Fizz Buzz 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目大意 解题方法 方法一:遍历判断 方法二:字符串相加 方法三:字典 日期 [L ...

  2. 【九度OJ】题目1175:打牌 解题报告

    [九度OJ]题目1175:打牌 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1175 题目描述: 牌只有1到9,手里拿着已经排好序的 ...

  3. 【LeetCode】974. Subarray Sums Divisible by K 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 前缀和求余 日期 题目地址:https:/ ...

  4. 【九度OJ】题目1187:最小年龄的3个职工 解题报告

    [九度OJ]题目1187:最小年龄的3个职工 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1187 题目描述: 职工有职工号,姓名, ...

  5. OA系统中手写签批功能的实现

    一.需求背景 OA系统审批中,有对word或者pdf文件源文档在指定的位置可以插入相应的文字,其实就是一个审批的功能,到了指定的人那边,他可以进行签批.这个功能一般来说,是针对于领导方面,对于一个事情 ...

  6. 【机器学习】matplotlib库练习-函数绘图

    # 1创建2个图形区域,一个叫做green,大小是16,8,一个叫做red,大小是10,6 # 2绿色区域画一条绿色的正弦曲线,红色区域化两条线,一条是绿色的正弦曲线,一条是红色的余弦曲线 # 3在g ...

  7. C++模拟python风格的print函数--打印vector,map,list等结构

    // 最基本实现 template<typename T> static void print(T t) { std::cout << t; } // 处理 std::pair ...

  8. 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态。点击列表的项,切换二级列表的显示或隐藏状态

    查看本章节 查看作业目录 需求说明: 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态.点击列表的项,切 ...

  9. C# double类型精度丢失问题

    我们先看一段代码,可以在控制台程序中执行看看结果 { double d = 500; double d1 = 233.84; double d2 = d - d1; //d2=266.15999999 ...

  10. svn钩子脚本

      使用钩子脚本的意义: 我们在测试环境中搭建好svn后,开发人员可以正常的上传和下载写好的代码了.但是上传到测试服务器,在版本库中(tshop)是看不到这些数据的.所以在测试环境中(linux测试服 ...