You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell 7.5中创建WinUI3 GUI界面

在PowerShell 7.5(.NET 9)中手动配置WinUI3运行环境解决类未注册问题

WinUI3依赖特定的运行时初始化、COM组件注册逻辑,Visual Studio创建WinUI3项目时会自动完成这些环节,手动加载DLL时需要补全以下步骤:

1. 加载官方签名的WinUI3核心DLL

从微软官方安装路径加载兼容.NET 9的WinUI3组件,路径示例(版本号可能随更新变化):

# 加载核心XAML组件
Add-Type -Path "C:\Program Files (x86)\Windows Kits\10\ExtensionSDKs\Microsoft.UI.Xaml\2.8.4\lib\net5.0-windows10.0.19041.0\Microsoft.UI.Xaml.dll"
Add-Type -Path "C:\Program Files (x86)\Windows Kits\10\ExtensionSDKs\Microsoft.UI.Xaml\2.8.4\lib\net5.0-windows10.0.19041.0\Microsoft.UI.Xaml.Controls.dll"

# 加载Windows App Runtime引导组件
Add-Type -Path "C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.5_1.5.240328000_x64__8wekyb3d8bbwe\Microsoft.WindowsAppRuntime.Bootstrap.dll"

2. 初始化Windows App Runtime

WinUI3依赖Windows App Runtime环境,需手动触发初始化:

[Microsoft.WindowsAppRuntime.Bootstrap]::Initialize(0) | Out-Null

3. 初始化WinUI3 XAML应用上下文

WinUI3必须先存在Application实例才能创建窗口,用未编译C#代码定义一个空的Application子类并初始化:

$appCode = @"
using Microsoft.UI.Xaml;
public class PSWinUIApp : Application
{
    protected override void OnLaunched(LaunchActivatedEventArgs args) {}
}
"@

# 加载自定义Application类
Add-Type -TypeDefinition $appCode -ReferencedAssemblies "Microsoft.UI.Xaml.dll"

# 启动XAML运行时
[PSWinUIApp]::Start([System.Action[Microsoft.UI.Xaml.LaunchActivatedEventArgs]]$null)

4. 创建并渲染窗口与按钮

现在可以正常实例化Window并添加交互元素:

# 创建窗口
$window = New-Object Microsoft.UI.Xaml.Window
$window.Title = "PowerShell WinUI3 Demo"
$window.Width = 400
$window.Height = 300

# 创建按钮并绑定点击事件
$button = New-Object Microsoft.UI.Xaml.Controls.Button
$button.Content = "关闭窗口"
$button.Add_Click({ $window.Close() })

$window.Content = $button
$window.Activate()

5. 启动消息循环维持窗口运行

WinUI3窗口需要消息循环处理用户交互,手动启动循环:

$dispatcherQueue = [Microsoft.UI.Dispatching.DispatcherQueue]::GetForCurrentThread()
while ($window.Visible) {
    $dispatcherQueue.ProcessEvents([Microsoft.UI.Dispatching.DispatcherQueueProcessingMode]::ProcessAllEventsIfPresent)
    Start-Sleep -Milliseconds 10
}

关键注意事项

  • 所有DLL必须从微软官方安装路径获取(如Windows Kits、WindowsApps目录),禁止使用自行编译的二进制文件
  • 确保WinUI3版本、Windows App Runtime版本与.NET 9兼容
  • 必须严格遵循「初始化Runtime → 初始化App上下文 → 创建窗口」的顺序

内容的提问来源于stack exchange,提问作者SpyNet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 07:26:05