Ошибка "PDB не соответствует изображению" в проекте С# VS2010

Я использовал библиотеку в моей базе кода некоторое время, и я хотел отлаживать ее прямо на уровне библиотеки. Для этого я загрузил исходный код и включил проект в качестве существующего проекта в свое решение С#. Затем у меня были другие проекты, которые ссылаются на этот проект вместо загруженного .DLL.

После ссылки на проект вместо DLL я запустил мое решение через отладчик и попытался войти в вызов функции, который вызывается во внешний проект, но он шагнул прямо над ним. Во время отладки я открыл окно "Модули" и увидел, что статус символа DLL читает "PDB не соответствует изображению", что является вероятной причиной неспособности отладить этот проект.

Мой вопрос прост, почему PDB не соответствует изображению, если мой проект напрямую ссылается на файл .csproj как ссылку? Не должно быть какой-либо двусмысленности относительно того, какую версию запускать.

Ответ 1

Я столкнулся с этой проблемой раньше, когда у меня есть другой открытый проект, который также ссылается на DLL и использует его информацию об отладке (PDB). В основном другой проект ставит блокировку файлов в PDB в проекте, на который ссылается, и когда вы компилируете или отлаживаете проект, на который ссылается, он спокойно не может создать обновленный PDB файл.

Если это то, что происходит, убедитесь, что у вас нет других приложений или экземпляров VS, которые ссылаются на вашу DLL, а затем искать и удалять все копии PDB из-под папок BIN и OBJ, а затем перекомпилировать он.

Я надеюсь, что это поможет.

Ответ 2

Иногда это происходит, потому что вы могли бы создать проект как выпуск.

Щелкните правой кнопкой мыши на решении и нажмите "Batch Build" > Проверьте все ваши проекты и нажмите "Очистить"

Ответ 3

Для меня это произошло для надстройки Excel. Я пошел в окно модулей, чтобы понять, почему он не загружается для моей dll. Я посмотрел папку, в которой находился .dll, и отправился в это место. В этом месте был файл .ini. Открыв его, я обнаружил место установки моего приложения, которое оказалось в "C:\Program Files", в отличие от местоположения bin\debug моего проекта.

В основном у меня была старая версия уже установленной надстройки, которая меня загрузила, пытаясь отладить проект. Я удалил старый проект, удалил старое расположение .dll в "C:\Users [user]\AppData\Local\assembly\etc..." и voila, отладчик загрузил недавно скомпилированную dll.

Ответ 4

Столкнувшись с той же проблемой, это было связано с старой сборкой и последним PDB. Между ними было несоответствие. Сборка была построена правильно, но снова моя копия post dll script была , переписав ее более старой. Удаление проблемы с dll из post build script. Необходимо обеспечить, чтобы dll или pdb обновлялись, когда наконец начинается отладка.

Ответ 5

Это случилось со мной сегодня, когда я пытался отлаживать dll-плагин notepad++, мне пришлось изменить выходной каталог сборки на каталог плагинов notepad++ и настроить отладчик на запуск notepad++ вместо текущего dll проекта для продолжения установки точки останова., Это сводило меня с ума, так как Visual Studio 2019 говорил мне, что SYMBOLS не были загружены для плагина dll, который я пытался отладить.

Наконец, проверка измененной даты и времени, как предлагали другие, заставила меня понять, что pdb не был обновлен с меткой времени dll сборки build. Я попытался пересобрать решение, но у сгенерированной pdb была та же самая старая временная метка, хотя я удаляю их вручную и запускаю сборку. Поэтому все, что мне нужно было сделать, это внести изменения в исходный код, удалив пробел и перестроив. Вуаля! на этот раз я получил отладчик для автоматической загрузки символов для моей библиотеки DLL и достижения заданной точки останова.

Возможно, очистка раствора тоже могла бы сработать.