Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;PDB与图像不匹配“;C#VS2010项目中的错误_C#_.net_Visual Studio 2010_Visual Studio_Pdb Files - Fatal编程技术网

&引用;PDB与图像不匹配“;C#VS2010项目中的错误

&引用;PDB与图像不匹配“;C#VS2010项目中的错误,c#,.net,visual-studio-2010,visual-studio,pdb-files,C#,.net,Visual Studio 2010,Visual Studio,Pdb Files,我在代码库中使用库已经有一段时间了,我想直接调试到库级别。为此,我下载了源代码,并将该项目作为现有项目包含到我的C#解决方案中。然后,我让我的其他项目引用该项目,而不是下载的.DLL 一旦引用了该项目而不是DLL,我就通过调试器运行我的解决方案,并尝试单步执行一个本应调用外部项目的函数调用,但它正好跳过了它。调试时,我打开“模块”窗口,看到DLL的符号状态为“PDB不匹配图像”,这可能是无法调试此项目的原因 我的问题很简单,如果我的项目直接引用.csproj文件作为引用,为什么PDB与图像不匹配

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

一旦引用了该项目而不是DLL,我就通过调试器运行我的解决方案,并尝试单步执行一个本应调用外部项目的函数调用,但它正好跳过了它。调试时,我打开“模块”窗口,看到DLL的符号状态为“PDB不匹配图像”,这可能是无法调试此项目的原因


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

我以前遇到过这个问题,因为我打开了另一个项目,该项目也引用了DLL并使用了它的调试信息(PDB)。基本上,另一个项目会在引用项目中的PDB上锁定文件,当您编译或调试引用项目时,它会悄悄地无法生成最新的PDB文件

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


我希望这会有所帮助。

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


右键单击解决方案并单击“批量构建”>检查所有项目,然后单击“清理”

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


基本上,我已经安装了一个旧版本的外接程序,它正在加载到我试图调试项目的时候。我卸载了旧项目,删除了“C:\Users[user]\AppData\Local\assembly\etc.”中的旧.dll位置。瞧,调试器加载了新编译的dll。

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

这发生在我今天调试notepad++dll插件时,我必须将buildoutput目录更改为notepad++的plugins目录,并将调试器设置为启动notepad++而不是当前的项目dll,以继续设置断点。这让我抓狂,因为VisualStudio2019告诉我,我试图调试的插件dll没有加载符号

最后,按照这里其他人的建议检查修改后的日期和时间,使我意识到pdb并没有使用构建输出dll时间戳更新。我尝试重建解决方案,但生成的pdb具有相同的旧时间戳,尽管我手动删除它们并启动构建。所以我所要做的就是在源代码中做一个修改,删除一个空白并重新构建。瞧!这一次,我让调试器自动加载dll的符号,并点击设置的断点


可能清理解决方案也会起作用。

尝试清理解决方案。是否已将引用的项目配置为生成调试符号?@SLaks清理解决方案无法解决问题。.pdb文件存在于build文件夹中(与dll一起)@DarrenKopp它被明确配置为生成调试符号。我验证了pdb文件是否存在,以及pdb文件上的时间戳是否与编译时匹配?这似乎是问题的一半。关闭可能正在使用这些DLL/PDB的任何其他内容似乎都没有帮助。但是,如果我用库的/bin目录中的DLL覆盖应用程序的/bin目录中的DLL/PDB文件,事情就会按预期进行。因此,文件复制到我的应用程序的/bin目录的方式似乎有问题。奇怪的行为。在任何情况下,这都不理想,但手动复制文件在短期内有效。谢谢这正是我的问题。当VS在命令窗口中运行时,我试图在VS中进行调试。@Chris完全正确。我刚才也检查了一下,发现两个DLL的大小和修改日期都不一样,但应该是一样的。我正在生成后事件中复制DLL&PDB文件,我猜它没有将最新的DLL文件复制到目标文件夹。解决方案:我必须停止IIS并生成项目。然后它按预期复制了我的所有文件。