Я хочу обновить библиотеку классов (единственный файл DLL) в производственном веб-приложении. Это веб-приложение предварительно компилируется (опубликованное). Я прочитал ответ на StackOverflow (извините, может казаться, больше не находит его, потому что Поисковая функция не работает очень хорошо), который привел меня полагать, что я мог просто вставить новый DLL в папке мусорного ведра, и он будет взят без проблем (это заставило бы WP перерабатывать, который меня устраивает, потому что мы не используем состояние сеанса InProc).
Однако, когда я попробовал это, мои аварийные завершения сайта и даю FileLoadException, говоря, что определение манифеста сборки не соответствует ссылке на сборку. Что в мире это?! Обновление DLL в Visual Studio и повторное развертывание всего сайта работают просто великолепно, но это - огромная боль сзади. Какой смысл того, чтобы иметь отдельный DLL, если необходимо повторно развернуть весь сайт для реализации каких-либо изменений?
Вот вопрос: Как я могу обновить DLL на производственном веб-сайте, не повреждая приложение и не повторно развертывая все файлы?
Следует помнить, что существуют веб-сайты и веб-приложения, если рассматривать Visual Studio и ASPNET.
Веб-сайты обычно публикуют все файлы ASPX и VB на работоспособм сервере, а рабочий процесс ASPNET перекомпилирует приложение каждый раз перед презентацией.
На другом конце находится веб-приложение, где весь ваш код файлов заложенным компилируется в один DLL-файл, и вы просто развертываете страницы aspx и откладывая папку с DLL-файлом в рабочую среду.
Существует также «гибрид», известный как «Precompiled Web Sites» (см. ссылку на официальный обзор MSDN), где у вас нет единого макета DLL веб-приложения, но вся работа по компиляции веб-сайта выполняется за вас.Есть несколько «режимов» для этого в зависимости от ваших потребностей.
Мне кажется, что ваша ошибка вызвана тем, что ваш сайт настроен как веб-сайт с какой-то предварительной компиляцией. Использование предварительно скомпилированной модели немного более «строго», то есть предполагает, что определенные файлы / подписи находятся на месте. Наличие обновленной версии DLL-файла приводит к перерыву, поскольку предварительной компиляции требуется имя и версия файла.
Если возможно, лучше всего преобразовать в веб-приложение, так как вы можете добавить дополнительные библиотеки DLL в рабочую производную области без проблем. В противном случае взгляните на эту матрицу, чтобы узнать, какая форма предварительной компиляции вам нужна для вашего приложения.
Посмотрите на свою ссылку. Там написано "specific version = true" ? Установите значение false, переиздайте приложение (это нужно сделать один раз, потому что теперь ваше приложение все еще ищет сборку с определенным манифестом) и попробуйте снова.
Посмотрите на этот пост SO, возможно это то, на что вы ссылаетесь. Определение манифеста расположенной сборки не соответствует ссылке на сборку