Visual studio PDB文件不包括所有.net源信息

Visual studio PDB文件不包括所有.net源信息,visual-studio,msbuild,pdb-files,Visual Studio,Msbuild,Pdb Files,这可能归结为我对PDB文件和构建过程的误解,而不是任何特定的问题,但我一直在努力从别处找到一个好的答案 我们最近一直是优秀的小开发人员,并开始在中央符号服务器(所有TFS的一部分)上索引和存储我们的pdb文件。问题是我们的PDB文件似乎没有包含所有源信息 尝试在Visual Studio中导航到源时,会找到程序集的pdb文件,如输出窗口所示: PdbNavigator: Downloader: file://server/Symbols/my.assembly.pdb/1DB3F79EA3094

这可能归结为我对PDB文件和构建过程的误解,而不是任何特定的问题,但我一直在努力从别处找到一个好的答案

我们最近一直是优秀的小开发人员,并开始在中央符号服务器(所有TFS的一部分)上索引和存储我们的pdb文件。问题是我们的PDB文件似乎没有包含所有源信息

尝试在Visual Studio中导航到源时,会找到程序集的pdb文件,如输出窗口所示:

PdbNavigator: Downloader: file://server/Symbols/my.assembly.pdb/1DB3F79EA3094EAAADFC6CDE6515FC871/my.assembly.pdb -> ok, 251 KB
PdbNavigator: No debugging information found on symbol servers for my.assembly, Version=1.0.1.1206, Culture=neutral, PublicKeyToken=4cd79aeab39b919b
但与此同时,它表示没有找到任何来源。如果我使用windows SDK中的一些工具,我可以看到PDB文件不包含项目中约30%源文件的信息

我想我在某个地方读到过PDB文件只包含项目中实际使用的类的源代码,但是对于任何API类型的程序集,如果多个类在程序集中可能没有功能,那么这肯定会造成一个巨大的问题,仅当从项目的其他部分使用时

如果有人能说明这一点,请告诉我

谢谢。

PDB(通常)不存储源代码-它包含一个“文档”列表,即源代码文件名和“方法信息”,用于将源代码行映射到程序集或二进制文件中的偏移量。当程序集的签名和生成日期与PDB文件中的签名和生成日期匹配时,PDB将匹配。很可能MyAssembly.pdb的版本正确,但签名和/或生成日期不匹配


据我所知,签名未公开,但您可能会在Internet上找到一些代码,其中说明如何读取PE签名和PDB签名,以便进行比较。

在项目的属性页中,在有问题的项目的“生成”选项卡下,您是否看到“优化代码”复选框?检查过了吗?