在Visual Studio 2005中,我们可以通过将启动外部程序路径设置为我们的本机应用程序来构建托管类库并进行调试。本机应用程序将通过com创建并运行托管代码。启动本机应用程序时,无法调试托管类库
在visual studio 2012中,同样的过程似乎不起作用。当本机应用程序启动时,模块窗口中似乎没有加载任何东西。
分离调试器并重新连接到正在运行的进程会导致模块被加载,并且现在可以调试托管类库。
如何获取模块自动加载?
在Visual Studio 2005中,我们可以通过将启动外部程序路径设置为我们的本机应用程序来构建托管类库并进行调试。本机应用程序将通过com创建并运行托管代码。启动本机应用程序时,无法调试托管类库
在visual studio 2012中,同样的过程似乎不起作用。当本机应用程序启动时,模块窗口中似乎没有加载任何东西。
分离调试器并重新连接到正在运行的进程会导致模块被加载,并且现在可以调试托管类库。
如何获取模块自动加载?
当本地应用程序启动使用与Visual Studio工具版本不同的CLR的.NET Framework版本时,会发生这种情况。
例如,如果您的本机应用程序使用.NET 2.0,并且您使用的是VS2012,那么您需要手动将调试程序指向正确版本的框架。
可以通过添加指定CLR版本[本地应用] .exe.config文件与,例如(到.NET 2.0 - 3.5,CLR 2.0)做到这一点:
<?xml version ="1.0"?>
<configuration>
<startup>
<!-- Required for automatic Module debugging. -->
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
这是一个已知的问题,如果你想了解更多:
它工作在VS2012完全相同的方式。你可能忘了在.NET项目中启用非托管调试。 –
mmm启用本地代码调试加载所有本地模块,但没有加载托管模块 – user3013827
嗯,一个明显的原因是本机代码无法加载托管模块。在COM错误检查上采取捷径是一个非常常见的错误。你已经有了调试器,现在可以更好地使用它了。 –