<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Windows | The .NET Blog</title><link>https://thedotnetblog.com/zh/tags/windows/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>zh</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Thu, 23 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/zh/tags/windows/index.xml" rel="self" type="application/rss+xml"/><item><title>Windows App Dev CLI v0.3：从终端实现F5调试和面向智能体的UI自动化</title><link>https://thedotnetblog.com/zh/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/zh/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/</guid><description>Windows App Development CLI v0.3带来了winapp run（从终端进行调试启动）、winapp ui（UI自动化）以及一个让dotnet run支持打包应用的NuGet包。</description><content:encoded>&lt;p&gt;&lt;em&gt;本文已自动翻译。如需查看原文，请&lt;a href="https://thedotnetblog.com/zh/posts/emiliano-montesdeoca/windows-app-dev-cli-v03-run-ui-automation/"&gt;点击这里&lt;/a&gt;。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Visual Studio的F5体验非常棒。但是，仅仅为了启动和调试一个打包的Windows应用而打开VS，在CI流水线、自动化工作流或AI智能体执行测试时就显得过于繁重了。&lt;/p&gt;
&lt;p&gt;Windows App Development CLI v0.3&lt;a href="https://devblogs.microsoft.com/ifdef-windows/windows-app-development-cli-v0-3-new-run-and-ui-commands-plus-dotnet-run-support-for-packaged-apps/"&gt;正式发布&lt;/a&gt;，通过两个核心功能直接解决了这个问题：&lt;code&gt;winapp run&lt;/code&gt;和&lt;code&gt;winapp ui&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="winapp-run随处可用的f5"&gt;winapp run：随处可用的F5&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;winapp run&lt;/code&gt;接受一个未打包的应用文件夹和清单，执行VS在调试启动时所做的一切：注册松散包、启动应用，并在重新部署之间保留&lt;code&gt;LocalState&lt;/code&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 构建应用，然后作为打包应用运行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winapp run ./bin/Debug
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;支持WinUI、WPF、WinForms、Console、Avalonia等。各模式同时面向开发者和自动化工作流：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--detach&lt;/code&gt;&lt;/strong&gt;：启动后立即将控制权返回给终端。非常适合CI/自动化。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--unregister-on-exit&lt;/code&gt;&lt;/strong&gt;：应用关闭时清理已注册的包。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--debug-output&lt;/code&gt;&lt;/strong&gt;：实时捕获&lt;code&gt;OutputDebugString&lt;/code&gt;消息和异常。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="新nuget包打包应用的dotnet-run支持"&gt;新NuGet包：打包应用的dotnet run支持&lt;/h2&gt;
&lt;p&gt;面向.NET开发者，新增了一个NuGet包：&lt;code&gt;Microsoft.Windows.SDK.BuildTools.WinApp&lt;/code&gt;。安装后，&lt;code&gt;dotnet run&lt;/code&gt;处理整个内循环：构建、准备松散布局包、在Windows中注册和启动——一步完成。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winapp init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 或&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dotnet add package Microsoft.Windows.SDK.BuildTools.WinApp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="winapp-ui从命令行实现ui自动化"&gt;winapp ui：从命令行实现UI自动化&lt;/h2&gt;
&lt;p&gt;这是开启智能体场景的功能。&lt;code&gt;winapp ui&lt;/code&gt;从终端提供对任何正在运行的Windows应用（WPF、WinForms、Win32、Electron、WinUI3）的完整UI自动化访问。&lt;/p&gt;
&lt;p&gt;可以实现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;列出所有顶层窗口&lt;/li&gt;
&lt;li&gt;遍历窗口的完整UI自动化树&lt;/li&gt;
&lt;li&gt;按名称、类型或自动化ID搜索元素&lt;/li&gt;
&lt;li&gt;单击、调用和设置值&lt;/li&gt;
&lt;li&gt;截图&lt;/li&gt;
&lt;li&gt;等待元素出现——非常适合测试同步&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;将&lt;code&gt;winapp ui&lt;/code&gt;与&lt;code&gt;winapp run&lt;/code&gt;结合使用，即可从终端实现完整的构建→启动→验证工作流。智能体可以运行应用、检查UI状态、以编程方式交互并验证结果。&lt;/p&gt;
&lt;h2 id="其他新功能"&gt;其他新功能&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp unregister&lt;/code&gt;&lt;/strong&gt;：测试完成后删除旁加载的包。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;winapp manifest add-alias&lt;/code&gt;&lt;/strong&gt;：添加别名，从终端按名称启动应用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tab补全&lt;/strong&gt;：一条命令配置PowerShell补全。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="安装方式"&gt;安装方式&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;winget install Microsoft.WinAppCli
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 或&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g @microsoft/winappcli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;CLI处于公开预览阶段。完整文档请查看&lt;a href="https://github.com/microsoft/WinAppCli"&gt;GitHub仓库&lt;/a&gt;，所有详细信息请查看&lt;a href="https://devblogs.microsoft.com/ifdef-windows/windows-app-development-cli-v0-3-new-run-and-ui-commands-plus-dotnet-run-support-for-packaged-apps/"&gt;原始公告&lt;/a&gt;。&lt;/p&gt;</content:encoded></item></channel></rss>