本文记录一个 WinUI 3 的坑点,有时候开发者只是想拉下来代码跑一下,自己本机没有预先安装好 Windows App Runtime 导致缺失环境,进而在运行的时候提示 Unable to load DLL 找不到 Microsoft.ui.xaml.dll 启动失败

详细的错误信息如下

System.DllNotFoundException:“Unable to load DLL ‘Microsoft.ui.xaml.dll’ or one of its dependencies: 找不到指定的模块。 (0x8007007E)”

大部分情况下的错误都在如以下代码的 XamlCheckProcessRequirements 里面

        [global::System.Runtime.InteropServices.DllImport("Microsoft.ui.xaml.dll")]
        [global::System.Runtime.InteropServices.DefaultDllImportSearchPaths(global::System.Runtime.InteropServices.DllImportSearchPath.SafeDirectories)]
        private static extern void XamlCheckProcessRequirements();

对应的英文错误信息如下

Unable to load DLL ‘Microsoft.ui.xaml.dll’ or one of its dependencies: The specified module could not be found. (0x8007007E)

此问题是因为没有安装好 Windows App Runtime 环境,导致 WinUI 3 缺失环境而运行失败,或者是因为没有将 WinUI 3 使用自包含方式发布而找不到环境

对应以上原因就有两个修复方法:

方法一是给安装上环境,安装方法如下

进入到 https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads 下载页

下载安装 Windows App Runtime 安装包 WindowsAppRuntimeInstall.exe 文件修复此问题

方法二是构建为自包含方式,在 csproj 里面添加如下代码即可

   <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>

详细请参考 WinUI 3 修复非打包应用运行提示缺少 Windows App Runtime 环境

此问题已经报告给官方,详细请看 https://github.com/microsoft/WindowsAppSDK/issues/2443


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-WinUI-3-%E4%BF%AE%E5%A4%8D%E9%9D%9E%E6%89%93%E5%8C%85%E5%BA%94%E7%94%A8%E8%BF%90%E8%A1%8C%E6%8F%90%E7%A4%BA-Microsoft.ui.xaml.dll-%E6%89%BE%E4%B8%8D%E5%88%B0.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者收藏我的博客导航

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

微软最具价值专家


无盈利,不卖课,做纯粹的技术博客

以下是广告时间

推荐关注 Edi.Wang 的公众号

欢迎进入 Eleven 老师组建的 .NET 社区

以上广告全是友情推广,无盈利