为什么在调试时,Visual Studio跳过了我的方法?

6
我试图调试一个通过NuGet安装的库中的方法(如果有关系的话),但是Visual Studio跳过了它并显示以下消息:“Step into: Stepping over method without symbols 'Cpi.Net.SecureMail.CryptoHelper.FindCertificate'”。
我已经在调试设置中添加了符号服务器源,并且当我首次调试程序时,它告诉我正在下载此库的符号。我已经验证了符号确实被下载了,因为它们出现在我的符号缓存目录中。
由于SLaks的帮助,我现在知道从符号服务器下载的PDB显然处于过时的格式中。如果我直接从TeamCity的构建工件中检索PDB,则调试将起作用。
因此,似乎PDB文件通过NuGet打包过程或通过Symbol Server下载过程(ProGet)被修改了。
问题的范围现在显然扩大了。

2
检查调试、模块窗口。 - SLaks
哦,以前从没研究过这个。它说“PDB格式已经过时了”。 - Mark
人们不禁想知道为什么PDB格式会过时。 - Mark
1
@Mark:你尝试过删除你的pdb文件然后重新编译吗? - AndyG
@AndyG 嗯,就像我更新问题陈述的那样,如果我直接从构建库(TeamCity)获取该库的PDB,则可以正常工作。我还从TeamCity的NuGet包副本中获取了它,也可以正常工作。显然,ProGet在某种程度上对其进行了修改? - Mark
1个回答

1
事实证明,ProGet确实会篡改PDB文件,使其指向源服务器而不是本地构建文件夹的源文件。由于某种原因,ProGet创建的PDB文件不被Visual Studio所接受。Inedo和我还没有找到原因。

Inedo已经意识到这个问题:http://inedo.com/support/questions/1411。我建议你直接联系他们(通过电子邮件或在线聊天),让他们知道你也遇到了同样的问题。受影响的人越多,他们解决问题的可能性就越大。 - Mark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接