在 VS2010 中调试混合模式应用程序时,在非托管 c++ dll 源文件(从托管 c# 包装器类调用)中包含的一行代码上设置的断点显示臭名昭著的“断点当前不会被命中。没有符号被将鼠标悬停在相关行的断点上时,为该文档加载”信息消息。断点本身是一个带有黄色信息三角形的红色圆圈,而不是通常的实心红色球体。当然,执行调试器时不会命中断点。我为这个警告找到的大多数答案都表明断点设置不正确,或者没有加载预期的 dll,或者相关的 pdb 文件没有位于正确的位置等等。这不是问题。应用程序确实正确加载并执行了引用的 dll。我已经验证了正确的 pdb 文件,其文件日期与其 dll 相同,与目标 dll 本身一起位于可执行文件的工作目录中。调试器根本不会加载 dll 的符号,并且 dll 不会显示在 Modules 列表中。
我在网上找到的解决方案都没有解决这个问题。该 dll 未显示在“调试->Windows->模块”菜单选择中可用的模块列表中......即使它实际上已加载。包装类中设置的断点可以正常工作。
删除 bin 和 obj 目录,清理和重建解决方案也无济于事。