在 Visual Studio 中调试 DLL 时看不到本地 class 变量..?

Cannot see local class variables while debugging DLL in Visual Studio..?

我正在尝试调试我在 VB.Net 中编写的 DLL。当外部程序启动时,它加载 DLL 并且一切运行正常......但我在 Locals 窗格中看不到 class 变量。它们显示为空白,如下所示。

此外,某些代码行会生成错误 "There is no source code available for the current location",但我想我明白原因了。每当它试图进入任何 Microsoft DLL 的 class 成员时,它当然不会有这些信息。但是任何只处理我编写的代码的行,它都可以正常工作。

这是 Microsoft Access 2007 的 COM DLL 加载项,但我假设无论 DLL 的类型如何,问题都大致相同。 Shared COM Addin Wizard 用于启动,然后从那里进行定制并获得令人满意的结果...除了 Locals window 中的不可见变量。

我不熟悉编写和调试这样的 DLL;直到现在我只完成了 EXE 文件。我研究了 MSDN、Google 和 Stack Overflow,这里是在其他线程上询问的详细信息...

我翻遍了注册表,找到了对项目、DLL 及其自定义 UserControl 的所有引用(这是必需的,因为项目创建了一个 CustomTaskPane,并且所有路径路径都指向 \bin\ 文件夹。

我做错了什么?

我做对了什么?

我可以改进什么?

好的,回答我自己的部分问题。我想我修复了错误消息 "There is no source code available for the current location"。在项目属性中 "Enable unmanaged code debugging" 已启用。

禁用该选项后,我现在可以毫无错误地单步执行代码,即使它命中了我没有代码的对象。调试器的行为也有点不同,但我还没有确定它。我确实阅读了托管代码和非托管代码之间的区别,并以混合组合方式调试它们,但是虽然我在原则上理解,但在实践中我还不理解。

不过,我的局部变量仍然是空白。

好吧,在其他项目之间为此工作了几天之后,我得到了一个答案……某种程度上。我认为解决方案 and/or 项目已损坏。我会把我力所能及的分享给大家,希望对大家有帮助。

昨天我在项目设置和选项 > 调试中进行了 "click everything" 的马拉松训练,但没有任何帮助。在某些时候,我停止摆弄调试设置并继续编写代码,直到我累了回家。

今天早上,我重新尝试了一次,发现 私有 class 变量现在全部可见。我不知道为什么。此外,还有一个新问题:Just-In-Time 调试器提示不断弹出,即使它未在设置中启用:

此外,play/stop/step 工具栏按钮在不应该被禁用时会被禁用,但相同项目的菜单选择功能正常。

我double-checked重新设置所有。我玩了所有东西,但无法让本地 class 变量再次变得不可见,也无法让 JIT 对话框消失。

所以我...

  • 复制了解决方案文件夹。
  • 清理了解决方案。
  • 重建解决方案,包括安装项目。
  • 已通过解决方案资源管理器从 Windows 卸载安装项目。
  • 再次清洗溶液。
  • 已删除 SUO 文件。
  • 删除了 \bin\ 和 \debug 中的所有内容。
  • 重建解决方案,包括安装项目。
  • 问题仍然存在。

在出现 JIT 提示后,我单击了继续 (F5),然后关闭了 MSAccess。执行停止后,一些 IDE 窗格(例如 Explorer、Locals 等)消失了,还有一些飞到屏幕上的随机位置。就在那时,我决定某些东西可能已损坏,并开始制定 uninstall/reinstall 整个 Visual Studio 2008 年的计划,甚至可能从头开始制定新的解决方案。

所以在重新安装之前,我尝试从头开始创建一个新的解决方案,并发现一切正常,即使所有设置都来自原始解决方案

所以在原来的解决方案中我...

  • 已从“工具”>“导入和导出设置”中导出设置。
  • 重置所有设置。
  • 导入了我刚刚保存的设置。
  • 在导入对话框关闭时,我收到错误消息:"An unexpected error has occurred"。
  • 重新启动 VS IDE 时,我收到了一个对话框 "Visual Studio is configuring the environment for first time use"。听起来不太好。
  • 再次尝试导入设置,同样的错误。
  • 重新启动,再次尝试导入,同样的错误。
  • 关闭解决方案文件,尝试在没有打开任何解决方案的情况下再次导入设置,它成功了......或者似乎成功了。
  • 然后打开解决方案...同样的问题又回来了。
  • 已从新解决方案中导出设置。
  • 将这些设置导入到原始解决方案中...它已修复...?
  • 没有导入错误,项目开始正常运行..!!
  • 本地 class 变量可见,JIT 提示消失了..!!

所以...我想解决方案、其中一个项目、IDE 设置或...某些东西出现了问题。我希望这可以帮助别人。