#visual-studio #uwp #native-code
#visual-studio #uwp #собственный код
Вопрос:
У меня есть простой UWP-клиент в простом веб-приложении. Когда я запускаю его с конфигурацией отладки, он отлично работает, когда я запускаю с выпуском, он отлично работает. Однако, когда я создаю пакет для Microsoft Store и развертываю его локально, он выходит из строя при попытке открыть определенный класс документов.
Я попытался поместить всплывающее окно сообщения в необработанные инструкции, но не получил никакого всплывающего окна.
Я пытался подключиться к нему с помощью отладчика Visual Studio, но все, что я получаю, это сообщение о том, что Visual Studio не может отлаживать собственный код. Появляется .Флаг Net Native Tool Chain — это единственное различие между рабочей и аварийной версиями моего приложения.
Есть идеи / подсказки о том, как отладить эту проблему?
Комментарии:
1. Действительно ли это «собственный» код? На каком языке он был написан? Если вы использовали C #, использовали ли вы компилятор AOT?
2. Спасибо, я обновил код, чтобы быть более конкретным. Мы говорим о . Опция NEt Native Tool Chain.
Ответ №1:
ОК. Это съело день моей жизни. Оказывается, существует по крайней мере один класс ошибок, который даже не считается предупреждением RTL, но является необработанным исключением в .ЧИСТЫЙ машинный код. Я использовал стиль в элементе управления, у которого не было надлежащего базового элемента управления. Вот использование:
<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 не вызвал никаких предупреждений или даже информационных сообщений. Однако, как только я загрузил его с помощью диагностики сбоев хоккея, я смог, наконец, получить сообщение:
Не удается применить стиль с TargetType ‘GammaFour.Views.Элементы управления.DecimalControl’ к объекту типа ‘GammaFour.Views.Элементы управления.PriceControl’. [Строка: 0 Позиция: 0]
Итак, ответ таков: вам нужно ознакомиться с утилитой Hockey, упомянутой в ссылке, если вы планируете диагностировать ошибки приложения UWP, потому что, по-видимому, не все, что разрешено в RTL, разрешено в машинном коде.
Комментарии:
1. Привет, @Donald Airey, читая ваш пост, мне было интересно, как вы настраиваете свою систему ведения журналов. Возможно, с хорошим регистратором и правильными настройками вы могли бы найти источник проблемы намного быстрее.
2. @NickPolyderopoulos — Нет, ведение журнала с использованием Serilog не выявило сбоя или несоответствия между целевыми элементами управления в стилях.
Ответ №2:
Вы не можете отлаживать пакет выпуска, но вы можете извлечь код исключения, обратившись к отчету об ошибке, расположенному где-то в
C:UsersAll UsersMicrosoftWindowsWERReportArchive
Попробуйте использовать некоторые средства диагностики, чтобы открыть wer
файл, например средство просмотра диагностических данных или AppCrashView, и просмотреть код исключения.
Комментарии:
1. В этом файле не было ничего интересного.