我在一个简单的Web应用程序上有一个简单的UWP客户端。当我使用Debug配置运行它时,它运行良好,当我使用Release运行时,它运行良好。但是,当我为Microsoft Store创建一个包并在本地部署它时,当我尝试调出某类文档时,它会崩溃。
我试图在未处理的指令上放置一个弹出消息框,但不要弹出任何弹出窗口。
我试图用Visual Studio调试器附加它,但我得到的是一条消息,Visual Studio无法调试本机代码。看来.Net Native Tool Chain标志是我的应用程序的工作版本和崩溃版本之间的唯一区别。
有关如何调试此问题的任何想法/线索?
您无法调试发行包,但可以通过访问位于其中的错误报告来提取异常代码
C:\Users\All Users\Microsoft\Windows\WER\ReportArchive
尝试使用一些诊断工具打开wer
文件,如Diagnostic Data Viewer或AppCrashView,并查看异常代码。
好。这吃了我生命中的一天。事实证明,至少有一类错误甚至不被RTL视为警告,而是.NET Native代码中的未处理异常。我在控件中使用的样式没有适当的基本控件。这是用法:
<gfcontrols:PriceControl DataContext="{Binding Path=LastPrice}"
Style="{StaticResource PriceStyle}"/>
这是风格:
<Style x:Key="PriceStyle"
TargetType="controls:QuantityControl">
<Setter Property="Format"
Value="#,##0.00;-#,##0.00"/>
</Style>
请注意,QuantityControl不是PriceControl的可接受目标类型,因为它们都是ContentControl的子项。在Visual Studio调试器中运行它不会导致任何警告甚至信息性消息。但是,一旦我通过Hockey Crash Diagnostics加载它,我终于得到了消息:
无法将具有TargetType“GammaFour.Views.Controls.DecimalControl”的Style应用于“GammaFour.Views.Controls.PriceControl”类型的对象。 [线:0位置:0]
因此,答案是:如果您希望诊断UWP应用程序错误,则需要熟悉链接中提到的Hockey实用程序,因为显然,并非本机代码中允许RTL中允许的所有内容。