2009-02-18 4 views
0

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

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

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

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

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

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

+0

Какова стоимость персонала? – JaredPar

ответ

1

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

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

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

+0

Спасибо за ваши комментарии! Я не совсем следовал последнему вопросу о загрузке XAML. Не могли бы вы уточнить? –

+0

Минимальная оболочка (например, несколько утверждений в консольном приложении) вокруг экземпляра класса XAMLReader, чтобы проверить, что в XAML нет проблемы. – Richard

0

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