无法看到 XAML 实时可视化树

问题描述 投票:0回答:3

在向微软报告之前我想在这里问一下。我有一个问题,无法看到 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,没有任何变化。

xaml visual-studio-2022 winui-3 hot-reload visual-tree
3个回答
3
投票

所以我终于找到了解决方案(更多的是解决方法)。

在提升的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 更新到新版本时,您必须重复此过程。


2
投票

这是一个 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 即可生效。重新启动调试会话就足够了。


1
投票

经过多次重新安装,100+?,我遇到了这些信息,然后问题解决了。

Visual Studio 2022 17.2 之后的近期质量非常令人沮丧。每次更新都会让我一次又一次地重新安装循环,只是因为有些东西坏了。

这次,MAUI (WinUI 3) XAML 热重载将不起作用。 XAML Hot Reload

因此,我创建了 3 个虚拟机并安装了不同细节的工作负载,并试图找出“出了什么问题”。但我失败了。

该错误似乎是随机的。然而,我确实发现了一些奇怪的事情。

热重载在安装后“工作”,我让虚拟机保持打开状态。一段时间后,我停止调试并重新开始调试,随着时间的推移,工作的那个不知何故变得“不工作”,所以我比较了两个快照,一个工作,一个不工作。比较安装配置后,用用户运行,用管理员运行,MAUI App使用.net 6.0,MAUI App使用模板7.0,两个注册表,两个磁盘都包含(整个C:)。我什么也没发现,一切都应该是相同的。

检查日志: 事件日志,AppData\Local\Temp\VSLogs,AppData\Local\Xamarin\Logs .0,VS 的输出

但是,输出:调试。确实让我跟踪组件绑定过程,也没有发现。

那个“不工作”:
The One
一个“工作”:
The One

数据巨大但运气不佳:
Assembly binding log

Windows 策略,不走运:审核访问拒绝

我不得不说错误日志隐藏得很好。

经过大量谷歌搜索后,我发现了这些信息,然后问题就解决了。这是一个权限问题。

然后我进一步挖掘,在这里我发现:

VS输出:
WindowsAppRuntime, installed at first run, may be update after

C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.1_1005.616.1651.0_x64__8wekyb3d8bbwe

权限不同的文件列表(不工作与工作):

  • CoreMessagingXP.dll
  • dcompi.dll
  • dwmcorei.dll
  • DwmSceneI.dll
  • DWriteCore.dll
  • marshal.dll
  • Microsoft.DirectManipulation.dll
  • 微软.Foundation.winmd
  • 微软.Graphics.winmd
  • Microsoft.InputStateManager.dll
  • Microsoft.Internal.FrameworkUdk.dll
  • Microsoft.UI.Composition.OSSupport.dll
  • Microsoft.UI.Input.dll
  • Microsoft.UI.Windowing.Core.dll
  • 微软.UI.winmd
  • Microsoft.Web.WebView2.Core.dll
  • Microsoft.Web.WebView2.Core.winmd
  • 资源.pri
  • WindowsAppRuntime.png
  • WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll
  • wuceffectsi.dll
  • en-GB\Microsoft.ui.xaml.dll.mui
  • en-GB\Microsoft.UI.Xaml.Phone.dll.mui
  • Microsoft.UI.Xaml\Assets\NoiseAsset_256x256_PNG.png

结论:

  1. “Microsoft.WindowsAppRuntime”将在首次运行时安装,并且不会通过 Visual Studio 卸载来卸载。
  2. “Microsoft.WindowsAppRuntime”可能会更新,权限也会更改。
  3. Microsoft.WindowsAppRuntime 文件夹及其中的文件的 ACL 权限在一段时间后可能会发生某种变化,同一版本(没有走这么远来了解原因)。
  4. 手动操作权限就可以了
  5. 简单重置(
  6. 需要系统访问权限PsExec):
psexec64 -i -s cmd.exe /k icacls.exe "C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.1_1005.616.1651.0_x64__8wekyb3d8bbwe\*.*" /reset /t

  1. Minimun Reset(对于我的情况,一旦重置完成,调试时就会出现热重载,记得重新启动调试):
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
    
© www.soinside.com 2019 - 2024. All rights reserved.