2013-08-07 40 views
1

WinRT的應用切換時混合的調試器類型(從管理的),該應用程序未能啓動..暫停調試器顯示執行是在:無法調試運8應用使用混合(管理和母語)調試器

static void Main(string[] args) 
{ 
    global::Windows.UI.Xaml.Application.Start((p) => new App()); 
} 

輸出窗口不斷顯示EETypeLoadExceptions不同的存儲位置:

在0x757E4B32在ApplicationName.exe第一次機會異常:微軟 C++異常:內存位置0x0BF7D134處的EETypeLoadException。

它看起來像CLR例外是:

CLR:(C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll) Rejecting native image because native image dependency C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll had a different identity than expected 

我需要使用本機調試器SOS調試擴展(SOS.dll)

當創建一個新的空白應用程序,然後添加相同的依賴關係作爲我的應用程序,我沒有遇到問題,所以它的某些特定於我的應用程序。

關於什麼問題或如何進一步排除故障的任何想法?任何有使用SOS調試擴展(SOS.dll)和WinRT應用程序的經驗的人?

+0

重要的是看到託管的異常來調試這個,本地異常是沒有用的。 Debug + Exceptions,勾選Thrown複選框以查看CLR異常。 –

+0

看起來像它來自Ninject:'mscorlib.dll 發生類型'System.IO.FileNotFoundException'的第一次機會異常其他信息:無法加載文件或程序集'Ninject.Extensions。*。dll'或其中一個依賴。系統找不到指定的文件。' – user1694394

+0

診斷模塊加載問題的另一種有用方法是使用sysinternals進程監視器來監視您的應用程序啓動。您可以查找有問題的DLL,並查看應用程序在嘗試加載時探測的所有位置,然後找出爲什麼必需的DLL不在其中一個位置。 –

回答

0

我有一個託管應用程序調用本機COM對象,該對象又調用回一些託管COM實例。在本地COM正在回調託管COM對象時的某個時刻EETypeLoadException被拋出。

原來,我在不同的項目具有相同名稱(Common.dll)有幾個組件。由於所有程序集都是未簽名的.NET運行時無法加載兩個具有相同名稱的不同程序集,並通過EETypeLoadException報告了問題。

我希望診斷更詳細,但至少現在已經解決了我的情況。