WinUI3打包应用通过MSI安装后无法加载Microsoft.ui.xaml.dll报错
你的核心问题是Setup Project没有自动包含WinUI3必需的Windows App SDK运行时依赖,WinUI3不像传统WPF/WinForms仅依赖.NET框架就能运行,它必须依托Windows App Runtime组件才能正常工作,以下是具体修复步骤:
给Setup Project添加Windows App SDK运行时作为先决条件
右键Setup项目 → 属性 → 点击「先决条件」按钮,在弹出窗口里勾选和你项目匹配的Windows App Runtime (v1.x) - x64版本(比如v1.4、v1.5,要和你WinUI3项目引用的SDK版本完全一致),选择合适的下载源(推荐「从与我的应用程序相同的位置下载」,方便离线场景安装)。检查WinUI3项目的发布输出完整性
右键WinUI3项目 → 发布,确认配置为x64 Release,且未开启「生成单个文件」选项(单文件发布可能导致依赖DLL被嵌入或遗漏,建议先关闭该选项测试)。发布完成后,前往输出目录确认Microsoft.ui.xaml.dll、Microsoft.WindowsAppRuntime.Bootstrap.dll、Microsoft.WindowsAppRuntime.dll这些核心文件都存在。确保Setup Project包含所有必要文件
打开Setup项目的「文件系统」视图,检查「应用程序文件夹」里是否包含:- 你的WinUI3主程序EXE
- 上一步提到的所有Windows App Runtime相关DLL
- 项目其他依赖的第三方DLL(如果有)
若这些文件未自动添加,直接从WinUI3的Release x64输出目录拖拽到Setup项目的应用程序文件夹中。
重新构建并测试
先重新构建WinUI3项目,再构建Setup项目,生成新的MSI安装包后安装测试。
另外提醒:不要同时混用MSIX打包项目和Setup Project,用Setup Project就全程基于它来配置依赖,避免产生冲突。
内容的提问来源于stack exchange,提问作者Ryan Durrant

