我们在项目中使用 Mono.Cecil。它是否有任何功能可以让我检查特定的 PDB 和 DLL 是否匹配?
谢谢!
Cecil 没有公开 API 来测试 pdb 和 dll 是否匹配。但是,当您读取程序集并尝试读取其符号时,它会进行检查。
但是 pdb 匹配模块到底意味着什么?
这意味着 pdb 和模块共享一条记录,其中包含完全相同的 GUID 标识符和 pdb 的修订号(也称为年龄)。
有时您只想检查 GUID,有时您想同时检查两者。Cecil 本身并没有为您提供覆盖默认行为的方法,但它是一个非常容易的更改。查看PdbReader的来源。
目前检查是在 PopulateFunctions 中,我们目前没有强制 pdb 的年龄必须与程序集中的调试记录相同。您可以轻松地将其更改为更符合您口味的东西。
或者您可以完全使用另一个工具:我一直在满意地使用chkmatch 。