Мы используем Mono.Cecil в нашем проекте. Есть ли у него какие-либо функции, которые позволяют мне проверить, совпадают ли определенные PDB и DLL?
Спасибо!
Мы используем Mono.Cecil в нашем проекте. Есть ли у него какие-либо функции, которые позволяют мне проверить, совпадают ли определенные PDB и DLL?
Спасибо!
Cecil не предоставляет API для проверки соответствия pdb и dll. Однако он выполняет проверку, когда вы читаете сборку, и пытаетесь прочитать ее символы.
Но что именно означает, что pdb соответствует модулю?
Это означает, что pdb и модуль совместно используют запись, содержащую точно такой же идентификатор GUID и номер версии pdb (также названный возрастом).
Иногда вы хотите проверить только GUID, иногда вы хотите проверить оба. Сесил сам по себе не дает вам возможности переопределить поведение по умолчанию, но это очень легко изменить. Посмотрите исходный код PdbReader.
В настоящее время проверка находится в PopulateFunctions, и в настоящее время мы не обеспечиваем, чтобы возраст pdb был таким же, как у записи отладки в сборке. Вы можете легко изменить это на что-то большее на свой вкус.
Или вы можете использовать полностью другой инструмент: я с удовольствием использую chkmatch.