我的第一个 WinUI 3 程序,遇到了 5 次碰壁
为什么要学习 WinUI 3呢?
Winform 程序,简单、直接、快速;
Wpf 程序,丰富、多样、好看;
WinUI3 呢?据说它是前两者的升级版,比它们更酷炫,性能更好,而且跨平台,是技术的前沿。既然这么好,那不得不让人好奇地想去探索它了。
我的目标
希望新建一个最简单的程序,让它完整的跑起来。
这个目标对于 winform 和 wpf 来说就是几秒钟的事情,但是在WinUI 3,却遭遇了各种碰壁 编辑。
开发环境VS2022。
首先选择项目类型,“空白应用,已打包(桌面版中的 WinUI 3)” :


碰壁 1 :没有设计视图
创建完成后,打开主窗口xaml文件,竟然没有设计视图,这一点远不如WPF和Winform,但是xaml 代码看起来竟然和 wpf 一样,稍微多了一丁点安全感:

碰壁 2:编译报错
现在开始编译项目,竟然直接就不通过,出现了错误,刚开始就给了我下马威:

这个错误是因为 Windows App SDK (WinUI 3) 对 .NET SDK 版本有特定要求,需要为项目指定特定的Sdk版本,修改为如下图所示:

这时候,重新生成,成功了,转个圈圈庆祝一下
然后,准备以调试模式启动它:

欣慰的是,成功的看到了窗口正常启动了:

项目默认是 X86平台,如果需要调整为x64平台,需要调整以下两处即可:


此时,以 调试模式 和 直接运行模式 2个入口,都可以成功启动它:

看起来好像大功告成了,现在我们去软件的输出目录下,启动试试。
碰壁 3:exe无法启动
但是又悲剧了,输出目录下,直接运行 exe 竟然没有反应 :
216个文件:

原来在VS调试模式下,默认为这个项目是需要以MSIX打包方式来使用的, 当以非打包的方式直接去点开exe,结果就行不通。
于是修改项目的属性,让它以非打包的方式来启动,如下图所示:

很好,项目编译成功了,又很好,直接点 exe,可以成功启动了。
但是,目录下的文件竟然增加到了358个,太吓人了,我先假装没看见,暂时先容忍一下它:

碰壁 4 :exe 启动 和 调试运行 不可兼得
但是新问题又来了,这时候,在vs中以 调试运行 或 直接运行 都无法成功启动了:

好像二者不可兼得,真是神奇。我就先委屈一下吧,至少它在 开发模式 和 打包模式 下分别给出了可行的方案。
碰壁 5 :编译目录下文件数量奇多无比
现在有个非常大的问题。只是为了弹出一个click me,竟然编译目录下有300多个文件。 Click me的代价也太大了, 反观 wpf 的编译目录下,干净、利索、又清爽:

于是进行以下尝试,把项目打包为单文件,但是结果并没有让输出目录下的文件减少,因此放弃这种设置方案:

于是又进行以下尝试,把它指定为依赖系统的安装环境,来减少目录下携带的依赖文件,可是文件数量也没怎么变化,而且更关键的是,这时候启动报错了,提示缺少依赖环境,这样反而更麻烦了,所以也放弃了这种设置方案:


看来,系统默认的已经是按照最省心的、以及效率最高的方式来使用了,所以我们暂时先忍受一下它文件的杂乱,来继续看它的功能,因为软件发布之后会以部署包的形式,会把这一杂乱的现象屏蔽,我们先假定这里不是问题。
所以为了开发调试方便,以及启动性能最优,以及启动最省心,以下是我开发使用的项目配置:

以此为基础,从下篇开始,就可以对它的功能来进行探索了。
整体感受
与 winform 和 wpf 的简单方便的使用相比,WinUI 3 的首次接触可以算是 上刀山,下火海 了,希望后面的学习,它能呈现更多的惊艳,来补偿我此刻痛苦的感受。
我的第一个 WinUI 3 程序,遇到了 5 次碰壁的更多相关文章
- 手把手教你写一个RN小程序!
时间过得真快,眨眼已经快3年了! 1.我的第一个App 还记得我14年初写的第一个iOS小程序,当时是给别人写的一个单机的相册,也是我开发的第一个完整的app,虽然功能挺少,但是耐不住心中的激动啊,现 ...
- 用c-free 5写一个入门的程序
本文记录了在windows系统中使用C-FREE 5新建一个Hello HoverTree程序的步骤. 安装好C-Free 5之后,打开.新建一个工程: 附C-Free 5下载:http://hove ...
- 字符串混淆技术应用 设计一个字符串混淆程序 可混淆.NET程序集中的字符串
关于字符串的研究,目前已经有两篇. 原理篇:字符串混淆技术在.NET程序保护中的应用及如何解密被混淆的字符串 实践篇:字符串反混淆实战 Dotfuscator 4.9 字符串加密技术应对策略 今天来 ...
- 第一个C语言程序
从第一个C语言程序了解C语言 了解关键字 了解函数 注释 C语言的执行流程 标识符 C语言的学习重难点 从第一个C语言程序了解C语言 上图是一个在控制台上显示“Hello, World!”的C语言源代 ...
- 第六章第一个linux个程序:统计单词个数
第六章第一个linux个程序:统计单词个数 从本章就开始激动人心的时刻——实战,去慢慢揭开linux神秘的面纱.本章的实例是统计一片文章或者一段文字中的单词个数. 第 1 步:建立 Linu x 驱 ...
- fir.im Weekly - 如何做一个出色的程序员
做一个出色的程序员,困难而高尚.本期 fir.im Weekly 精选了一些实用的 iOS,Android 开发工具和源码分享,还有一些关于程序员的成长 Tips 和有意思有质量的线下活动~ How ...
- Java基础-接口中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。 要求如下: (1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中 有个“坚持党的领导”方法:void partyLeader() (2)该应用程序中有一个“国务院”抽象类:StateCouncil,
36.中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产.请编写一个java应用程序描述上述的体制现象. 要求如下: (1)该应用程序中有一个“党中央”接口 ...
- Java基础-继承-编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。
#29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类T ...
- java基础,继承类题目:编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类 E
21.编写一个Java应用程序,该程序包括3个类:Monkey类.People类和主类 E.要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public vo ...
- 【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序
1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...
随机推荐
- docker logs 命令使用
查看容器的操作信息 a3: 正在运行容器简称 docker logs a3
- NSIS打包脚本模板
; Script generated by the HM NIS Edit Script Wizard. ; HM NIS Edit Wizard helper defines !define PRO ...
- RabbitMQ 延迟任务(限时订单) 思路
一.场景 我们经常会碰见,一个需求就是,发送一条指令(消息),延迟一段时间执行,比如说常见的淘宝当下了一个订单后,订单支付时间为半个小时,如果半个小时没有支付,则关闭该订单.当然实现的方式有几种,今天 ...
- python练习-爬虫
场景: 1.网址hppt://xxx.yyy.zzz.cn2.打开网页后显示 : 3.填上姓名 身份证和验证码,点击查询后,返回查询结果. 4.页面有cookie. 方案一: 程序中嵌入浏览器根据网址 ...
- 学习EXTJS6(9)面向对象的基础框架-1
Ext创造一套精细的对象模型与API,用这套API,可以快速实现对象的定义.创建.继承和扩展:1. 1.创建新类 Ext.define('demo.Demo',{ name: 'usegear', h ...
- WCHNET_SocketSend返回0x11原因及解决方法
问题描述: TCPCLIENT模式使用WCHNET_SocketSend发送有概率会返回0x11 按wchnet.h定义为内存溢出错误. 异常分析: 通过WCHNET_QueryUnack查看,发现异 ...
- idea插件开发踩坑记录
问题 build.gradles.kts配置文件中全部爆红,提示Cannot access script base class 'org.gradle.kotlin.dsl.KotlinBuildSc ...
- idea远程访问docker查看控制台中文乱码问题
今天心血来潮想把自己的项目部署到docker,部署完成后通过idea远程访问docker.发现控制台日志出现中文乱码,起初还以为docker或者项目编码没有设置好,一一排查后发现服务器编码和环境都没有 ...
- springAPI对事物支持之注解式配置
一.无Spring核心配置文件:applicationContext.xml下开启注解式事物 @Configuration @EnableTransactionManagement public cl ...
- PHP采集图片实例(PHP采集)
以下为引用的内容: <?php/** * 采集图片php程序** Copyright(c) 2008 by 小超(ccxxcc) All rights reserved** To cont ...