我们在项目中使用Mono.Cecil。它是否具有允许我检查特定PDB和DLL是否匹配的任何功能?
谢谢!
答案 0 :(得分:5)
Cecil不公开API来测试pdb和dll是否匹配。但是,它会在您读取程序集时进行检查,并尝试读取其符号。
但是,对于匹配模块的pdb来说,它究竟意味着什么呢?
这意味着pdb和模块共享一条记录,其中包含完全相同的GUID标识符和pdb的修订号(也称为年龄)。
有时您只想检查GUID,有时您想要检查两者。 Cecil本身并没有为您提供覆盖默认行为的方法,但这是一个非常容易的变化。看看PdbReader。
的来源目前检查是在PopulateFunctions中,我们目前没有强制要求pdb的年龄必须与程序集中的调试记录相同。您可以根据自己的喜好轻松改变它。
或者您可以完全使用其他工具:我一直在使用chkmatch。