Почему загруженная DLL отсутствует в списке модулей Visual Studio? - PullRequest
14 голосов
/ 27 августа 2010

Я в настоящее время нахожусь в поиске ошибок и мне нужно отладить в определенный DLL в конфигурации выпуска в Visual Studio 2005 В какой-то момент я закрыл решение, сделал некоторые другие вещи и перезагрузил его. С этого момента моя точка останова не получает удар, и я получаю печально известное сообщение "Символы не загружены ...". Поэтому я открыл окно модулей, и DLL, которую я хочу отладить, больше не появляется в списке, поэтому я не могу загрузить символы вручную. Приложение ведет себя нормально, поэтому я абсолютно уверен, что DLL ДОЛЖЕН быть загружен для выполнения определенных функций. Конечно, если я переименую dll и запущу приложение, оно больше не будет работать, поэтому оно также должно быть правильным dll.

Я попытался установить проект dll в качестве запускаемого проекта и команду для выполнения в exe приложения и запустить приложение из-за пределов Visual Studio, а затем подключить к процессу, но все безрезультатно.

Вопрос в том, почему dll не появляется в списке загруженных модулей, хотя он должен быть загружен? Я не могу думать ни о каких других изменениях, которые я сделал, которые могли бы вызвать это, я что-то упустил? (Может быть, что-то действительно очевидное?)

Любая помощь приветствуется!

Ответы [ 3 ]

8 голосов
/ 04 ноября 2012
  1. Используйте Process Explorer , чтобы проверить, загружена ли dll или нет.

  2. Когда вы присоединяете процесс, убедитесь, что вы включаете оба типа кода: «Собственный» и «Управляемый» (в опции выбора типа кода).

См. Также этот вопрос: Visual Studio не загружает модули при подключении к процессу

3 голосов
/ 27 октября 2012

Я столкнулся с подобной проблемой после переноса проекта с одного компьютера на другой.Я просто объясню , что я обнаружил и , как я это исправил , и вы сможете определить, соответствует ли это вашей проблеме и решению.

  1. Рабочий компьютер, на котором я написал приложение, содержал файл .dll, на который ссылалась моя программа.После перемещения приложения на мой домашний компьютер, приложение больше не могло найти файл .dll, на который оно ранее ссылалось, потому что файла больше не было.

  2. Приложение скомпилировано и запущено даже без ссылочного ресурса (файл .dll), поскольку ранее скомпилированная сборка (папка отладки) содержала свою собственную копию файла .dll и других ресурсов.Проще говоря, это старая сборка сборки, а не текущее приложение, над которым вы работаете.Это также, почему эта ошибка имеет тенденцию приостанавливать окно конструктора и выдавать ошибку после завершения работы приложения.

Я бы посмотрел на следующее:

a) В разделе Solution Explorer перейдите в папку References и щелкните правой кнопкой мыши отсутствующий опорный узел и выберите properties .В окне свойств обратите внимание на Путь ресурса, на который ссылаются. Ресурс по-прежнему находится по этому пути?

b) Проверьте папку отладки на наличие копии искомого ресурса.Если ресурс , скопируйте и сохраните его на рабочем столе.Если его нет , , получите файл из оригинального источника .

c) В обозревателе решений щелкните правой кнопкой мыши « Свойства » и « open ».В появившемся меню выберите « Resources » слева и вверху нового окна, которое появляется, вы должны увидеть « Add Resource » с маленькой стрелкой вниз. Нажмите стрелку и выберите « Добавить существующий файл », а затем найдите файл .Если вы этого не видите, вам, возможно, придется изменить просматриваемый файл из небольшого выпадающего меню над кнопками «Открыть» и «Отмена».После того, как файл найден, он должен создать новую папку в обозревателе решений под названием «ресурсы».Теперь этот файл является постоянной частью вашего приложения, а не просто ссылкой на него.

2 голосов
/ 29 мая 2014

У меня была та же проблема сегодня с Visual Studio 2008. Я использовал простой тестер для тестирования нового метода в сборке. Поэтому добавил ссылку на мою сборку, я написал код для загрузки сборки и вызова нового метода, build, все ок. Но во время выполнения отладчик выдаст исключение, сообщающее, что новый новый метод не существует, а окно модулей пустое.

Оказывается, что сборка, которую я модифицировал, была в GAC и использовалась вместо новой в моем каталоге сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...