Windows 8 无法使用混合(托管和本机)调试器调试Win 8应用程序

Windows 8 无法使用混合(托管和本机)调试器调试Win 8应用程序,windows-8,windows-runtime,winrt-xaml,sos,Windows 8,Windows Runtime,Winrt Xaml,Sos,在WinRT应用程序中将调试器类型从“托管”切换到“混合”,应用程序无法启动。。暂停调试器表明执行在: static void Main(string[] args) { global::Windows.UI.Xaml.Application.Start((p) => new App()); } 输出窗口将EETypeLoadExceptions连续显示为不同的内存位置: ApplicationName.exe中0x757E4B32处首次出现异常:Microsoft C++

WinRT应用程序中调试器类型从“托管”切换到“混合”,应用程序无法启动。。暂停调试器表明执行在:

static void Main(string[] args)
 {
     global::Windows.UI.Xaml.Application.Start((p) => new App());
 }
输出窗口将EETypeLoadExceptions连续显示为不同的内存位置:

ApplicationName.exe中0x757E4B32处首次出现异常:Microsoft C++异常:内存位置0x0bf7d134上的EyyPyoRooXePosi.

看起来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)

当创建一个新的空白应用程序,然后添加与我的应用程序相同的依赖项时,我没有遇到问题,因此这是我的应用程序特有的问题


关于问题是什么或如何进一步排除故障有何想法?任何有在WinRT应用程序中使用SOS调试扩展(SOS.dll)经验的人?

我有一个托管应用程序调用本机COM对象,然后调用一些托管COM实例。在本机COM回调托管COM对象时,引发了EETypeLoadException

事实证明,我在不同的项目中有几个同名的程序集(Common.dll)。由于所有程序集均未签名。NET运行时无法加载两个具有相同名称的不同程序集,并通过EETypeLoadException报告问题


我希望诊断更详细,但至少现在在我的案例中已经解决了。

我有一个托管应用程序调用本机COM对象,然后调用一些托管COM实例。在本机COM回调托管COM对象时,引发了EETypeLoadException

事实证明,我在不同的项目中有几个同名的程序集(Common.dll)。由于所有程序集均未签名。NET运行时无法加载两个具有相同名称的不同程序集,并通过EETypeLoadException报告问题


我希望诊断更详细,但至少现在在我的案例中已经解决了。

查看托管异常非常重要,要调试它,本机异常没有帮助。调试+异常,勾选CLR异常的“抛出”复选框。它似乎来自Ninject:
在mscorlib.dll中发生了“System.IO.FileNotFoundException”类型的第一次意外异常其他信息:无法加载文件或程序集“Ninject.Extensions.*.dll”或其依赖项之一。系统找不到指定的文件。
诊断模块加载问题的另一个有用方法是使用sysinternals进程监视器监视应用程序的启动。您可以查找有问题的DLL,并查看应用程序在尝试加载它时探测的所有位置,然后找出必要的DLL不在其中一个位置的原因。查看托管异常非常重要,因为要调试它,本机异常没有帮助。调试+异常,勾选CLR异常的“抛出”复选框。它似乎来自Ninject:
在mscorlib.dll中发生了“System.IO.FileNotFoundException”类型的第一次意外异常其他信息:无法加载文件或程序集“Ninject.Extensions.*.dll”或其依赖项之一。系统找不到指定的文件。
诊断模块加载问题的另一个有用方法是使用sysinternals进程监视器监视应用程序的启动。您可以查找有问题的DLL,并查看应用程序在尝试加载它时探测的所有位置,然后找出必要的DLL不在其中一个位置的原因。