" PDB与图像不匹配" C#VS2010项目中的错误

时间:2013-12-10 16:43:04

标签: c# .net visual-studio-2010 visual-studio pdb-files

我已经在我的代码库中使用了一段时间了,我想调试到库级别。为此,我下载了源代码并将项目作为现有项目包含在我的C#解决方案中。然后我让我的其他项目引用该项目而不是下载的.DLL。

一旦项目被引用而不是DLL,我通过调试器运行我的解决方案,并试图进入一个调用外部项目的函数调用,但它正好在它上面。在调试时,我打开了“模块”窗口,发现DLL的符号状态读为“PDB与图像不匹配”,这可能是无法调试该项目的原因。

我的问题很简单,如果我的项目直接引用.csproj文件作为参考,为什么PDB与图像不匹配?对于要运行的版本,不应该有任何歧义。

5 个答案:

答案 0 :(得分:10)

我在打开另一个项目之前遇到此问题,该项目也引用了DLL并使用其调试信息(PDB)。基本上,另一个项目在引用的项目中对PDB进行文件锁定,当您编译或调试引用的项目时,它悄然无法生成最新的PDB文件。

如果这是正在发生的事情,请确保没有其他应用程序正在运行或VS的实例打开引用您的DLL,然后从BIN和OBJ文件夹下面查找并删除PDB的所有副本,然后重新编译它

我希望有所帮助。

答案 1 :(得分:0)

有时会发生这种情况,因为您可能将项目构建为版本。

右键单击解决方案,然后单击“批量生成”>检查所有项目,然后单击“清除”

答案 2 :(得分:0)

对我来说,这是因为Excel加载项。我去模块窗口看看为什么它没有为我的dll加载。我查看.dll所在的文件夹并转到该位置。该位置有一个.ini文件。打开它显示了我的应用程序的安装位置,结果是在" C:\ Program Files \"而不是我的项目的bin \ debug位置。

基本上我已经安装了一个旧版本的加载项,在我尝试调试项目时会加载。我卸载了旧项目,删除了" C:\ Users [user] \ AppData \ Local \ assembly \ etc ..."中的旧.dll位置。瞧,调试器加载了新编译的dll。

答案 3 :(得分:0)

面对同样的问题,这是由于旧的装配和最新的PDB。两者之间存在不匹配。 程序集已正确构建,但我的post build dll复制脚本再次使用旧版本覆盖。 从post build脚本中删除dll解决了问题。 调试最终开始时,需要确保 dll或pdb是最新的

答案 4 :(得分:0)

今天这是在我尝试调试notepad ++ dll插件时发生的,我不得不将build输出目录更改为notepad ++的plugins目录,并将调试器设置为启动notepad ++而不是当前项目dll来进行设置断点。这让我很生气,因为Visual Studio 2019告诉我没有为我要调试的插件dll加载SYMBOLS。

最后检查修改的日期和时间(如此处其他建议),使我意识到pdb与生成输出dll时间戳不是最新的。我尝试重新构建解决方案,但是生成的pdb具有相同的旧时间戳,尽管我手动删除了它们并启动了构建。因此,我要做的就是删除空白并重新构建,以对源代码进行更改。瞧!这次,我得到了调试器来自动为dll加载符号并命中设置的断点。

也许清洗溶液也可能有用。