2010-02-22 2 views
3

У меня есть веб-приложение ASP.NET, которое содержит DLL в папке/bin 'Example.dll'. Если у меня нет упоминания «Example.dll» в Web.config, можно ли просто заменить его более новой версией «Example.dll», и приложение будет использовать его?Каков наилучший способ обновления DLL веб-приложений ASP.NET?

Если нет, то какие шаги необходимы?

ответ

4

Да, это безопасно (если вы были осторожны и не делали каких-либо изменений), но вот подсказка, которую я узнал из горького опыта: не создавайте резервную копию старой версии в той же папке. Даже если вы переименуете его как например Example.dll0, он все равно может смутить структуру.

Кроме того, это приведет к перезагрузке приложения.

+0

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

+0

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

+0

Я упал в новую DLL (без изменений, которые могли бы вызвать ошибки компиляции), и мое приложение полностью перестало работать, и у средства просмотра событий было несколько из этих сообщений (по одному на каждый последующий запрос). Исправлена ​​проблема с повторным развертыванием всего приложения. Просто случилось со мной в пятницу. –

1

Замена DLL приведет к перезапуску домена приложения (всего веб-приложения), любой код с использованием этой DLL будет использовать новую версию при перезагрузке. Текущие запросы к старому будут завершены, а затем завершены.

Так что никаких дополнительных шагов не требуется, просто знайте, что приложение перезапустится.

Смежные вопросы