在向微软报告之前我想在这里问一下。我有一个问题,无法看到 WinUI 3 应用程序的实时可视化树。我什至看不到应用程序内工具栏。我可以在 WPF 和 UWP 应用程序中看到,没有问题。我有这些热重载选项,应该没问题。
我使用的是VS2022 17.3.1和Windows App SDK 1.1.4版本。奇怪的是,它运行没有问题,但应用程序的一次重新启动就打破了这一点。我还尝试手动将 ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO 添加到环境变量中,但没有运气。
32位WinUI 3应用程序似乎工作正常,它只影响64位WinUI 3应用程序。即使是新的和空白的。打包/解包类型不影响问题。
我尝试卸载并再次安装VS,没有任何变化。
所以我终于找到了解决方案(更多的是解决方法)。
在提升的cmd中运行以下命令,将WindowsAppRuntime版本替换为您当前拥有的版本(对我来说是Microsoft.WindowsAppRuntime.1.1_1004.584.2120.0_x64__8wekyb3d8bbwe):
takeown /f "C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.1_1004.584.2120.0_x64__8wekyb3d8bbwe" /r /d y
icacls.exe "C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.1_1004.584.2120.0_x64__8wekyb3d8bbwe" /grant Users:(RD,R,REA,RX) /t
不知道它的作用,但它正在工作。该解决方案接管自开发者社区
更新: 当您将 Windows App SDK 更新到新版本时,您必须重复此过程。
这是一个 PowerShell 命令,它循环遍历所有 WindowsAppRuntime 文件夹并对 @benderto 的答案应用修复。
Get-ChildItem -Path 'C:\Program Files\WindowsApps\' -Filter 'Microsoft.WindowsAppRuntime*' | Foreach {
takeown /f "C:\Program Files\WindowsApps\$_" /r /d y
icacls.exe "C:\Program Files\WindowsApps\$_" /grant "Users:(RD,R,REA,RX)" /t
}
您无需重新启动 Visual Studio 即可生效。重新启动调试会话就足够了。
经过多次重新安装,100+?,我遇到了这些信息,然后问题解决了。
Visual Studio 2022 17.2 之后的近期质量非常令人沮丧。每次更新都会让我一次又一次地重新安装循环,只是因为有些东西坏了。
这次,MAUI (WinUI 3) XAML 热重载将不起作用。
因此,我创建了 3 个虚拟机并安装了不同细节的工作负载,并试图找出“出了什么问题”。但我失败了。
该错误似乎是随机的。然而,我确实发现了一些奇怪的事情。
热重载在安装后“工作”,我让虚拟机保持打开状态。一段时间后,我停止调试并重新开始调试,随着时间的推移,工作的那个不知何故变得“不工作”,所以我比较了两个快照,一个工作,一个不工作。比较安装配置后,用用户运行,用管理员运行,MAUI App使用.net 6.0,MAUI App使用模板7.0,两个注册表,两个磁盘都包含(整个C:)。我什么也没发现,一切都应该是相同的。
检查日志: 事件日志,AppData\Local\Temp\VSLogs,AppData\Local\Xamarin\Logs .0,VS 的输出
但是,输出:调试。确实让我跟踪组件绑定过程,也没有发现。
Windows 策略,不走运:审核访问拒绝
我不得不说错误日志隐藏得很好。
经过大量谷歌搜索后,我发现了这些信息,然后问题就解决了。这是一个权限问题。
然后我进一步挖掘,在这里我发现:
C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.1_1005.616.1651.0_x64__8wekyb3d8bbwe
权限不同的文件列表(不工作与工作):
结论:
psexec64 -i -s cmd.exe /k icacls.exe "C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.1_1005.616.1651.0_x64__8wekyb3d8bbwe\*.*" /reset /t
psexec64 -i -s cmd.exe /k icacls.exe "C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.1_1005.616.1651.0_x64__8wekyb3d8bbwe\Microsoft.Internal.FrameworkUdk.dll" /reset