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

C# 为什么Visual Studio在调试时跳过我的方法?,c#,debugging,symbols,proget,C#,Debugging,Symbols,Proget,我正在尝试调试库中的一个方法(如果有必要的话,它是通过NuGet安装的),Visual Studio将跳过它并显示以下消息: 步进:不带符号的步进方法 'Cpi.Net.SecureMail.CryptoHelper.FindCertificate' 我在调试设置中添加了一个符号服务器源代码,当我第一次调试程序时,它告诉我它正在下载这个库的符号。我已经确认符号确实已下载,因为它们显示在我的符号缓存目录中 多亏了SLaks,我现在知道从symbol服务器下载的PDB显然是过时的格式。如果我直接从T

我正在尝试调试库中的一个方法(如果有必要的话,它是通过NuGet安装的),Visual Studio将跳过它并显示以下消息:

步进:不带符号的步进方法 'Cpi.Net.SecureMail.CryptoHelper.FindCertificate'

我在调试设置中添加了一个符号服务器源代码,当我第一次调试程序时,它告诉我它正在下载这个库的符号。我已经确认符号确实已下载,因为它们显示在我的符号缓存目录中

多亏了SLaks,我现在知道从symbol服务器下载的PDB显然是过时的格式。如果我直接从TeamCity的构建工件中检索PDB,调试就可以工作了

因此,似乎不知何故或出于某种原因,PDB文件正在通过NuGet打包过程或符号服务器下载过程(ProGet)进行更改


问题的范围现在明显扩大了。

事实证明,ProGet确实在破坏PDB文件,以便使其指向源服务器,而不是源文件的本地构建文件夹。出于某种原因,ProGet正在创建一个VisualStudio不喜欢的PDB。Inedo和我还不能确定原因。

检查调试,模块窗口。嗯。以前从未调查过。上面写着“PDB格式已经过时了”。有人想知道为什么PDB格式会过时。@马克:你试过删除你的PDB文件然后重新编译吗?@AndyG好吧,就像我更新了问题的状态一样,如果我直接从构建库的地方(TeamCity)获得库的PDB,它会工作的。我还从TeamCity的NuGet软件包副本中获取了它,它也起到了作用。显然,ProGet不知怎么搞砸了?Inedo意识到了这个问题:我建议你直接与他们联系(通过电子邮件或现场聊天),让他们知道你看到了同样的问题。受影响的人越多,他们解决问题的可能性就越大。