我的第一个 WinUI 3 程序,遇到了 5 次碰壁
<p><strong>为什么要学习 WinUI 3呢?</strong><br>Winform 程序,简单、直接、快速;<br>
Wpf 程序,丰富、多样、好看;<br>
WinUI3 呢?据说它是前两者的升级版,比它们更酷炫,性能更好,而且跨平台,是技术的前沿。既然这么好,那不得不让人好奇地想去探索它了。</p>
<hr>
<p><strong>我的目标</strong><br>
希望新建一个最简单的程序,让它完整的跑起来。</p>
<hr>
<p>这个目标对于 winform 和 wpf 来说就是几秒钟的事情,但是在WinUI 3,却遭遇了各种碰壁编辑。</p>
<hr>
<p>开发环境VS2022。<br>
首先选择项目类型,“空白应用,已打包(桌面版中的 WinUI 3)” :<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093226488-1601836518.png"><br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093241426-604760862.png"></p>
<hr>
<p><strong>碰壁 1 :没有设计视图</strong><br>
创建完成后,打开主窗口xaml文件,竟然没有设计视图,这一点远不如WPF和Winform,但是xaml 代码看起来竟然和 wpf 一样,稍微多了一丁点安全感:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093334559-230878145.png"></p>
<hr>
<p><strong>碰壁 2:编译报错</strong><br>
现在开始编译项目,竟然直接就不通过,出现了错误,刚开始就给了我下马威:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093412305-212501892.png"><br>
这个错误是因为 Windows App SDK (WinUI 3) 对 .NET SDK 版本有特定要求,需要为项目指定特定的Sdk版本,修改为如下图所示:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093443214-940820744.png"><br>
这时候,重新生成,成功了,转个圈圈庆祝一下<br>
然后,准备以调试模式启动它:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093604002-1687343848.png"><br>
欣慰的是,成功的看到了窗口正常启动了:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093617911-353373116.png"><br>
项目默认是 X86平台,如果需要调整为x64平台,需要调整以下两处即可:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093631922-241953049.png"><br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093638283-95850597.png"><br>
此时,以 调试模式 和 直接运行模式 2个入口,都可以成功启动它:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093650366-185736118.png"><br>
看起来好像大功告成了,现在我们去软件的输出目录下,启动试试。</p>
<hr>
<p><strong>碰壁 3:exe无法启动</strong><br>
但是又悲剧了,输出目录下,直接运行 exe 竟然没有反应 :<br>
216个文件:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093813866-700824817.png"><br>
原来在VS调试模式下,默认为这个项目是需要以MSIX打包方式来使用的, 当以非打包的方式直接去点开exe,结果就行不通。<br>
于是修改项目的属性,让它以非打包的方式来启动,如下图所示:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093824718-1221046959.png"><br>
很好,项目编译成功了,又很好,直接点 exe,可以成功启动了。<br>
但是,目录下的文件竟然增加到了358个,太吓人了,我先假装没看见,暂时先容忍一下它:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417093838167-422327118.png"></p>
<hr>
<p><strong>碰壁 4 :exe 启动 和 调试运行 不可兼得</strong><br>
但是新问题又来了,这时候,在vs中以 调试运行 或 直接运行 都无法成功启动了:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417094012768-751397742.png"><br>
好像二者不可兼得,真是神奇。我就先委屈一下吧,至少它在 开发模式 和 打包模式 下分别给出了可行的方案。</p>
<hr>
<p><strong>碰壁 5 :编译目录下文件数量奇多无比</strong><br>
现在有个非常大的问题。只是为了弹出一个click me,竟然编译目录下有300多个文件。 Click me的代价也太大了, 反观 wpf 的编译目录下,干净、利索、又清爽:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417094030810-1403575625.png"><br>
于是进行以下尝试,把项目打包为单文件,但是结果并没有让输出目录下的文件减少,因此放弃这种设置方案:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417094043165-807113347.png"><br>
于是又进行以下尝试,把它指定为依赖系统的安装环境,来减少目录下携带的依赖文件,可是文件数量也没怎么变化,而且更关键的是,这时候启动报错了,提示缺少依赖环境,这样反而更麻烦了,所以也放弃了这种设置方案:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417094052459-1974482763.png"><br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417094101019-194253426.png"><br>
看来,系统默认的已经是按照最省心的、以及效率最高的方式来使用了,所以我们暂时先忍受一下它文件的杂乱,来继续看它的功能,因为软件发布之后会以部署包的形式,会把这一杂乱的现象屏蔽,我们先假定这里不是问题。<br>
所以为了开发调试方便,以及启动性能最优,以及启动最省心,以下是我开发使用的项目配置:<br>
<img src="https://img2024.cnblogs.com/blog/1040413/202504/1040413-20250417094116381-668533062.png"><br>
以此为基础,从下篇开始,就可以对它的功能来进行探索了。<br>
<strong>整体感受</strong><br>
与 winform 和 wpf 的简单方便的使用相比,WinUI 3 的首次接触可以算是 上刀山,下火海 了,希望后面的学习,它能呈现更多的惊艳,来补偿我此刻痛苦的感受。</p><br><br>
来源:https://www.cnblogs.com/xingrenh/p/18830267
頁:
[1]