HRException при запуске моего приложения C # WPF - PullRequest
0 голосов
/ 18 февраля 2009

У меня есть приложение на C # WPF, которое внезапно вызывает исключение при запуске, и я не могу понять, почему.

Исключением является C ++ HRException, и оно встречается в MSCORLIB в CreateInstanceSlow(), которое вызывается из CreateInstance(), которое вызывается из BamlRecordReader.CreateInstanceFromType() в System.Windows.Markup сборке.

Я переместил все свои сборки из этого приложения, а также стороннюю библиотеку, которую я только что обновил, и, наконец, снова запустил приложение (хотя это была просто оболочка). Затем я добавил стороннюю библиотеку lib обратно, без проблем, затем добавил каждую из моих сборок обратно, добавив каждую в качестве ссылки и объявив переменную типа, определенного в этой сборке, в моем основном приложении, и это сработало OK .

Так что я все испортил и вернулся к тому, что было зарегистрировано, и я снова вернулся к исключению, поэтому я не думаю, что это DLL, которую нельзя найти, или которая взрывается при инициализации - но я не могу понять, что это такое.

Я попытался спустить стек вызовов и посмотреть в функциях синтаксического анализа, но отладчик говорит мне, что я не могу исследовать большинство переменных из-за наличия собственного кадра в верхней части стека.

Буду очень признателен за любые советы о том, как выяснить, что на самом деле анализируется XAML, когда выдается исключение, а также слышать от всех, у кого были подобные проблемы.

Ответы [ 2 ]

1 голос
/ 19 февраля 2009

Я бы начал с того, что в VS включена встроенная и управляемая отладка и работает сервер символов. Это должно как минимум разрешить трассировку стека.

Другим вариантом может быть принудительное выполнение процесса и использование WinDBG (наряду с большим чтением блогов / книг, которые охватывают этот вид отладки).

Кроме того, является ли загрузка XAML самой простой из возможных оболочек (т. Е. Достаточно для использования экземпляра XamlReader)?

0 голосов
/ 19 февраля 2009

Хотя я по-прежнему буду благодарен за советы по отладке этих исключений, я смог отследить это. Одна из моих библиотек DLL использовала класс из другой библиотеки DLL, которая создавалась неправильно (хотя я до сих пор не знаю, почему). Как только я смог перестроить эту DLL и ту, которая ее потребляла, а затем перестроить свое приложение, все заработало. Но что расстраивает, так это то, что я вслепую наносил удары в темноте, используя метод проб и ошибок, чтобы выяснить, какая DLL (и какой класс в этой DLL) вызывала проблему. И единственное, что система могла мне сказать, это то, что где-то была ошибка в каком-то XAML. Я должен упомянуть, что эти сборки, которые я использовал в своем приложении C #, были написаны на C ++ / CLI и содержали собственный код C ++ - но я не думаю, что это действительно было проблемой взаимодействия. Так или иначе, дополнительные советы о том, как действительно понять, что действительно неправильно, будут с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...