Старый файл DLL продолжает использоваться - PullRequest
52 голосов
/ 07 апреля 2011

У меня, казалось бы, случайная проблема, когда мой проект будет выполняться с использованием старой версии DLL-файла, который больше не существует. Иногда будет использоваться реальная версия файла DLL, в других случаях будет использоваться древняя версия файла DLL. Кто знает, откуда Visual Studio получает этот DLL-файл - месяцы устарели!

Я знаю, что он использует старый файл DLL, потому что, когда приложение запускается, я начинаю получать странные 'TypeLoadExceptions', жалуясь на то, что методы не существуют или не имеют реализаций.

Иногда помогают следующие действия, иногда нет:

  • Перезапуск Visual Studio
  • Перезагрузка компьютера
  • Очистка и восстановление раствора
  • Удаление всего в \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Временные файлы ASP.NET
  • Поиск и удаление экземпляров DLL-файла в \ Documents and Settings \ username \ Local Settings \ Temp

Иногда я выполняю все вышеперечисленные шаги , и он по-прежнему использует старую копию файла DLL. Где это скрывается?!

Та же проблема существует на нашем TeamCity сервере, который использует MSBuild . Когда TeamCity пытается запустить модульные тесты, он использует старый файл DLL.

Теперь я знаю, что могу использовать перенаправление сборки в файле web.config, но номер версии DLL-файла не изменился (я не потрудился обновить его, поэтому он остается только в версии 1) , Я не хочу начинать создание версий файлов DLL только для решения этой проблемы. Я просто хотел бы знать, какие именно кэши мне нужно очистить, чтобы я мог продолжить разработку.

Ответы [ 15 ]

0 голосов
/ 16 января 2019

Я перепробовал множество вещей, включая переустановку VS 2107. Вы можете видеть, откуда загружаются файлы DLL, в окне вывода. Пройдя все шахты в поисках моей библиотеки DLL моего проекта, я нашел ее.

Очистка это сработало для меня.

C: \ Users \ YourUser \ AppData \ Local \ Assembly \ DL3 \ 222Q4G1T.8AT \ JBEAR7PB.E3J \ 8bfcf9ab \ 6e61cbd5_30acd401 \ YourDLL.dll '

Я фактически удалил все файлы в:

C: \ Users \ YourUser \ AppData \ Local \ Assembly \

0 голосов
/ 02 ноября 2018

В моем случае старая DLL была в

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MyDLL\MyDLL.dll

В c:\Windows\assembly.

она НЕ отображалась

Я выполнил поиск MyDLL на моем диске, и он обнаружился, как указано выше. В то время я отлаживал свое тестовое приложение и пытался удалить папку, которая не в порядке ... не было ... она была заблокирована Visual Studio. Мне пришлось прекратить отладку приложения, закрыть Visual Studio, а затем удалить папку. Задача решена!! Я не знаю, как моя DLL попала туда, но она не появилась там с тех пор, как я ее удалил.

0 голосов
/ 29 октября 2018

Если вы обнаружите такую ​​проблему, удалите файл Reference dll и файл расширения pdb, добавьте новые ссылки и перестройте ваш проект. Это часто происходит из-за отсутствия перестроения проекта, фиксации и обновлений.

0 голосов
/ 27 февраля 2018

В My Visual Studio 2015 я гарантировал, что список ссылок на пути проекта Visual Studio-нарушителя пуст:

enter image description here

0 голосов
/ 14 сентября 2011

Возможно, что на DLL ссылаются из другой папки. Это может быть даже сетевой диск, если он есть в переменной окружения PATH. Вот как Windows ищет библиотеки DLL: http://msdn.microsoft.com/en-us/library/7d83bc18%28v=vs.80%29.aspx

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