2009-02-18 13 views
0

我有一個C#WPF應用程序在啓動時突然拋出異常,我找不到原因。HRException啓動我的C#WPF應用程序

例外的是一個C++ HRException,並且它在MSCORLIBCreateInstanceSlow(),其從CreateInstance(),這是從BamlRecordReader.CreateInstanceFromType()System.Windows.Markup組件稱爲所謂的發生。

我把這個應用程序中的所有程序集以及我剛剛升級的第三方庫都移動了,最後讓應用程序再次運行(儘管它只是一個shell)。然後我加入了第三方lib,沒問題,然後把我的每個程序集都加回去了,每個都作爲引用添加,並在我的主應用程序中聲明瞭該程序集中定義的類型的變量,並且這可以工作確定

所以我吹走了所有的東西,並恢復到檢查的內容,並且我又回到了異常,所以我不認爲它是一個無法找到的DLL,或者是初始化時發生的DLL,但是我無法弄清楚它是什麼。

我試着降低調用堆棧並查看解析函數,但調試器告訴我,由於在堆棧頂部存在本機幀,因此無法檢查大部分變量。

我真的很感激任何關於如何去搞清楚什麼XAML實際上是在拋出異常時被解析的提示,以及聽到其他有類似問題的人。

+0

什麼是HR值? – JaredPar 2009-02-18 21:33:20

回答

1

我會從接下來的VS開始,啓用本地和託管調試,並且符號服務器正在工作。這應該至少允許一個堆棧跟蹤。

另一種選擇可能是強制執行一個進程dunp並使用WinDBG(以及大量包含這種調試的博客/書籍閱讀)。

此外,XAML加載是否是最簡單的包裝(即只使用XamlReader實例)?

+0

感謝您的意見!我沒有完全按照關於XAML加載的最後一個問題。你能澄清嗎? – 2009-02-20 00:03:09

0

雖然我仍然很欣賞如何調試這些異常的提示,但我能夠跟蹤這一個。我的一個DLL使用了另一個DLL中的類,它正在被錯誤地構建(雖然我仍然不確定爲什麼)。一旦我能夠重建該DLL和使用它的DLL,然後重建我的應用程序,一切都奏效了。但令人沮喪的是,我盲目地在黑暗中刺探,使用試驗和錯誤來找出哪個DLL(以及該DLL中的哪個類)導致問題。系統可以告訴我的唯一情況是某處某個XAML出現了某種錯誤。我應該提到,我在C#應用程序中使用的這些程序集是用C++/CLI編寫的,並且包含本機C++代碼 - 但我不認爲這真的是一個互操作問題。無論如何,如何真正弄清楚真正錯誤的附加提示將不勝感激!