繁体   English   中英

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

[英]“PDB does not match image” error in C# VS2010 project

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

一旦引用了项目而不是DLL,我就通过调试器运行了解决方案,并尝试进入将调用外部项目的函数调用,但是它直接跨接了该项目。 调试时,我打开了“模块”窗口,发现DLL的符号状态显示为“ PDB与映像不匹配”,这可能是无法调试该项目的可能原因。

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

在打开另一个也引用该DLL并使用其调试信息(PDB)的项目之前,我就遇到了这个问题。 基本上,另一个项目在参考项目中的PDB上放置了文件锁,并且当您编译或调试参考项目时,它静默地无法生成最新的PDB文件。

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

希望对您有所帮助。

有时会发生,因为您可能已将项目构建为发行版。

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

对我来说,这是一个Excel加载项。 我去了模块窗口,看看为什么没有为我的dll加载。 我查看了.dll所在的文件夹,然后转到该位置。 该位置有一个.ini文件。 打开它会显示我的应用程序的安装位置,事实证明它位于“ C:\\ Program Files \\”中,而不是项目的bin \\ debug位置。

基本上,我已经安装了旧版本的加载项,因此在尝试调试项目时会加载该加载项。 我卸载了旧项目,删除了“ C:\\ Users [用户] \\ AppData \\ Local \\ assembly \\ etc ...”中的旧.dll位置,然后瞧瞧,调试器加载了新编译的dll。

面对同样的问题,这是由于旧的程序集和最新的PDB。 两者之间不匹配。 该程序集已正确构建,但是我的后构建dll复制脚本又旧版本覆盖了 从生成后脚本删除dll解决了问题。 当调试最终开始时,需要确保dll或pdb是最新的

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

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

也许清洁溶液也可能有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM