下面的代码即使使用空XML(只有页面标签)也会导致此异常:
Natvis C++/WinRT: Exception in cppwinrt_visualizer::EvaluateVisualizedExpression
Natvis C++/WinRT: Exception in cppwinrt_visualizer::EvaluateVisualizedExpression
Natvis C++/WinRT: Exception in cppwinrt_visualizer::EvaluateVisualizedExpression
Natvis C++/WinRT: Exception in cppwinrt_visualizer::EvaluateVisualizedExpression
错误发生在这行rootFrame.Navigate(xaml_typename<ProjectNamespace::FirstPage>(), box_value(e.Arguments()));
void App::OnLaunched(LaunchActivatedEventArgs const& e)
{
window = make<MainWindow>();
Frame rootFrame = Frame();
rootFrame.NavigationFailed({this, &App::OnNavigationFailed});
rootFrame.Navigate(xaml_typename<ProjectNamespace::FirstPage>(),
box_value(e.Arguments()));
window.Content(rootFrame);
window.Activate();
}
有什么问题吗?
1条答案
按热度按时间0g0grzrc1#
诊断信息未表明 * 代码 * 有问题。它起源于C++/WinRT的debug visualizer实现,试图为调试器提供人类可读的见解。这就是faulting函数:
评论表明这是一个已知的问题,但尚未完全修复。损坏被包含在内,如果由于各种原因无法可视化对象或属性,该函数不会使调试器崩溃,而是不会可视化对象或属性。
复制
这是足够的信息来构建一个复制:
1.使用C++/WinRT为WinUI 3开发准备Visual Studio示例。
1.创建一个新的 “Blank App,Packaged(WinUI 3 in Desktop)" 项目。
1.打开Tools→Options...,导航到选项→Output Window,并将 “Natvis diagnostic messages(C++ only)" 详细程度设置为 “Error”。
1.在
App::OnLaunched()
中的这一行设置断点:1.选择【启动】→【启动】。
1.点击断点后,打开Windows→自动。
1.跨过这条线(跨过→跨过)。
此时,“错误” 输出窗格将显示如下几个错误:
解决方案
由于问题是在C++/WinRT调试可视化实现中,我们无法修复它。它需要由Windows App SDK、MSBuild或C++/WinRT团队之一解决。鉴于过去处理XAML和C++/WinRT遇到的问题的经验,我甚至不愿意提交issue。
用户有两个选择:
Natvis C++/WinRT:
开头的输出消息。