【问题标题】:Managed class libraries cant be debugged when a native app is launched启动本机应用程序时无法调试托管类库
【发布时间】:2013-11-20 16:00:10
【问题描述】:

在 Visual Studio 2005 中,我们可以构建托管类库并通过将启动外部程序路径设置为我们的本机应用程序来调试它们。本机应用程序将通过 com 创建和运行托管代码。

在 Visual Studio 2012 中,相同的过程似乎不起作用。启动本机应用程序时,模块窗口中似乎没有加载任何内容。

分离调试器并重新附加到正在运行的进程会导致加载模块并且现在可以调试托管类库。

如何让模块自动加载?

【问题讨论】:

  • 它在 VS2012 中的工作方式完全相同。您可能只是忘记在 .NET 项目中启用非托管调试。
  • mmm 启用本机代码调试会加载所有本机模块,但不会加载托管模块
  • 嗯,一个明显的原因是本机代码无法加载托管模块。在 COM 错误检查上采取捷径是一个非常常见的错误。你已经让调试器工作了,最好使用它。
  • @HansPassant :我认为您有点不屑一顾,VS2012 确实 以与 VS2005 不同的方式工作;它使用 CLR 4.0 引擎,这意味着当本机应用程序使用/定位 .NET

标签: .net debugging visual-studio-2012


【解决方案1】:

当本机应用程序启动使用与 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>

这是一个已知问题,如果您想了解更多信息:

http://blogs.msdn.com/b/andrehal/archive/2010/04/29/can-t-hit-breakpoints-in-a-plug-in-or-can-t-debug-net-2-0-3-0-3-5-from-a-mixed-mode-exe-project-with-visual-studio-2010.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-21
    • 2010-10-11
    • 2021-05-18
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    相关资源
    最近更新 更多