Почему ASP.NET загрузить неправильную версию сборки моего веб-приложения?

#asp.net #visual-studio-2008 #iis

#asp.net #visual-studio-2008 #iis

Вопрос:

У меня есть веб-приложение в Visual Studio 2008 с веб-службой и парой веб-форм. Когда я пытаюсь выполнить отладку, ни одна из моих точек останова не доступна; если я наведу на них курсор мыши, я увижу:

«Точка останова не будет достигнута. Исходный код отличается от исходной версии. «

Список загруженных модулей отладки включает старую версию 1.0. * моей сборки. С тех пор я изменил ее на 1.1.0.0, но эта версия никогда не загружается. Я попытался остановить IIS и удалить файлы из временного ASP.NET Файлы, но когда я перезапускаю его, версия 1.0. * возвращается обратно! Выходные данные сборки определенно 1.1.0.0, а не 1.0. *, так откуда же это может быть? То же самое происходит, когда я использую сервер разработки VS вместо IIS.

Спасибо

Комментарии:

1. Вероятно, вы могли бы сослаться на сборку 1.0 из GAC или другого местоположения, внешнего по отношению к источнику проекта. Найдите его в дереве в разделе «ссылки» и проверьте путь.

Ответ №1:

Я видел, как это происходит, когда DLL кэшируется во временном ASP.NET Папка с файлами. Попробуйте выполнить «Перестроить все», и если это все еще происходит, удалите DLL из папки temp или полностью очистите содержимое папки.

Комментарии:

1. К сожалению, это не сработало. Я также пытался удалить и воссоздать виртуальный каталог в IIS.

2. Возможно, у вас есть устаревшие ссылки?

3. Нет, я только вносил небольшие изменения в код веб-службы. Не изменил ни одной ссылки.

4. Вы используете веб-ссылку на веб-службу?

5. Это странно: я нашел копию выходных данных сборки в корне каталога bin по умолчанию, и это была версия 1.0. *. В корне bin не должно быть выходных данных сборки, только в подкаталоге x86 / Debug — понятия не имею, как он туда попал. Когда я полностью удалил каталоги bin и obj, а затем перестроил, это сработало. Спасибо!

Ответ №2:

У меня была очень похожая проблема:

  1. Веб-приложение, ссылающееся на сборку, содержащую ресурсы.
  2. При использовании культуры, отличной от стандартной (с ресурсами, встроенными в satellite *.resources.сборка dll), некоторые ресурсы использовались нормально, но некоторые возвращались к языку по умолчанию.
  3. Удаление Temp ASP.NET файлы или Очистить Build не помогли

Проблема в том, что большинство инструментов, которые вы можете использовать для решения проблем с загрузкой сборки diag (Process Explorer для списка загруженных сборок и путей, fuslogvw для журнала привязки сборок), вообще не показывают вспомогательные сборки.

Но, наконец, я обнаружил, что в папке моего веб-приложения bin находится старая версия сборки satellite (до сих пор не знаю, как она туда попала), и она получала приоритет во время проверки сборки загрузки…

Ответ №3:

Похоже, это срабатывает, когда файлы LastWriteTime не обновляются. Я могу надежно воспроизвести это, взяв две совершенно отдельные сборки dll с точно таким же LastWriteTime и развернув их в IIS одну за другой. Если я затем использую GNU touch для обновления файлов LastWriteTime, IIS выбирает текущую правильную версию.