为什么在Visual Studio的模块列表中缺少加载的dll?

Hat*_*tch 14 visual-studio-2005 visual-studio

我目前正在寻找bug并且需要在Visual Studio 2005的发布配置中调试到特定的dll.在某些时候我关闭了解决方案,做了一些其他的东西并重新加载它.从那时起我的断点就不会被击中而且我得到臭名昭着的"没有符号已被加载......"的消息.所以我打开了模块窗口,我要调试的dll不再出现在列表中,因此我无法手动加载符号.应用程序行为正常,所以我绝对确定必须加载dll才能执行某些功能.果然,如果我重命名dll并启动应用程序它不再起作用,所以它也必须是正确的dll.

我尝试将dll项目设置为启动项目,并将命令执行到应用程序的exe并从Visual Studio外部启动应用程序然后附加到该过程,但都无济于事.

问题是,为什么dll不会出现在已加载模块的列表中,尽管它必须已加载?我想不出我做过的任何其他变化,可能导致这种变化,我错过了什么?(也许真的很明显?)

任何帮助赞赏!

小智 8

  1. 使用进程资源管理器检查dll是否已加载.

  2. 附加流程时,请确保启用"本机"和"托管"代码类型(在代码类型选择选项中).

另请参阅此问题:Visual Studio在附加到进程时未加载模块


Jos*_*ell 6

将项目从一台计算机转移到另一台计算机后,我遇到了类似的问题。我将简单地解释我的发现以及如何修复它,您可以确定它是否适合您的问题和解决方案。

  1. 我编写应用程序的工作计算机包含我的程序引用的 .dll 文件。将应用程序移至我的家庭计算机后,应用程序无法再找到它之前引用的 .dll 文件,因为该文件已不存在。

  2. 即使没有引用的资源(.dll 文件),应用程序也会编译并运行,因为先前编译的程序集(调试文件夹)包含其自己的 .dll 文件副本和其他资源。简而言之,正在运行的是旧的程序集构建,而不是您正在处理的当前应用程序。这也是为什么此错误往往会暂停设计器窗口并在应用程序运行完成后抛出错误。

我会看一下以下内容:

a) 在“解决方案资源管理器”下,进入“引用”文件夹,右键单击缺少的引用节点并选择“属性”。在属性框中,观察所引用资源的路径。资源仍然位于该路径吗?

b)检查调试文件夹中是否有您要查找的资源的副本。如果该资源存在,请复制一份并将其保存到您的桌面上。如果不存在请从原始来源获取该文件

c)在“解决方案资源管理器”下,右键单击“属性”并选择“打开”。从出现的菜单中选择左侧的“资源”,在出现的新窗口的顶部,您应该看到带有小下拉箭头的“添加资源”。单击箭头并选择“添加现有文件”,然后浏览到该文件。如果您没有看到它,您可能需要从“打开”和“取消”按钮上方的小下拉列表中更改正在浏览的文件。找到文件后,它应该在解决方案资源管理器中创建一个名为“资源”的新文件夹。现在,该文件是您的应用程序的永久部分,而不仅仅是对其的引用。