Visual Studio如何知道源文件是否与原始版本匹配?

Cam*_*art 17 c# .net-assembly visual-studio-debugging pdb-files

我想出了.NET程序集.dll文件如何使用GUID(博客)映射到.pdb .当我调试到一个程序集并询问源代码时,如果我导航到一个文件,它可能会告诉我源代码与原始代码不同.怎么知道这个?我期望.pdb文件包含每个文件的校验和,但它似乎没有.我发现转储调试信息的最佳工具是dia2dump.C++ .pdb文件有MD5条目,但C#.pdb文件没有.

C++ dump
dia2dump -f dia2dump.pdb> dia2dump.pdb.files.txt

C#dump
dia2dump -f Autofac.pdb> Autofac.pdb.files.txt
dia2dump -all Autofac.pdb> Autofac.pdb.all.txt

我在"全部"转储中错过了什么?

它必须使用校验和.如果我在Module.cs中更改单个字符,我会得到:
在此输入图像描述

在哪里可以找到.pdb中引用的源文件的校验和?

Cam*_*art 11

MD5校验和存储在每个源文件的.pdb文件中.如果对上面的问题回答"否","您希望调试器还是使用它吗?",它会打印出它正在寻找的校验和:

在此输入图像描述

使用十六进制编辑器,您可以看到它绝对位于.pdb中.我的下一个任务是弄清楚如何以编程方式访问它.对于.pdb文件,我希望它返回所有源文件名及其MD5校验和.

在此输入图像描述

  • 我做到了.我创建了一个名为SourceLink的.NET库,可以做到这一点.https://github.com/ctaggart/SourceLink (3认同)
  • `sourcelink checksums -p <pdbfile>`来保存这一天 (3认同)