Подтвердить что ты не робот

Dll как в бункере, так и в gac, который используется?

У нас есть веб-приложение, которое развернуто на многих веб-сайтах с только внешними изменениями, общая часть бэкэнда имеет DLL в GAC, поэтому нам нужно только обновить эту DLL, и все сайты получают обновление.

Есть ли способ переопределить GAC с DLL в папке /bin, чтобы протестировать новые функции до их выпуска?

4b9b3361

Ответ 1

Если он имеет тот же номер версии, что и ссылка на DLL, используется GAC.

Если вы увеличиваете номер версии, перестройте сайт, ссылающийся на номер новой версии, поместите новую версию в каталог /bin, затем будет использована DLL.

Если вы не хотите менять номер версии, вам не повезло.

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

После этого он ищет сборку в GAC, затем в любой codebase, указанной, затем он исследует различные папки файловой системы для DLL. Если на любом из этих шагов он находит нужную версию сборки, она останавливается.

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

Ответ 2

Я смог переопределить GAC с помощью сборки в папке \bin с помощью <codebase> Элемент.

Указав <codebase version="1.2.3.4" href="/bin/MyAssembly.dll" /> в моем файле web.config, я могу сказать, что мое приложение использует эту версию, а не версию, указанную в GAC.

Вы также можете взглянуть на <probing> Элемент для указания мест сборки?

Ответ 3

Думаю, я могу сказать то же самое, что и Адам Силлс, но переформулировал это для моего понимания. Посредством собственного тестирования выглядит так:

  • Если ваше приложение скомпилировано с версией 1.0.0.0 и 1.0.0.1 в GAC, вы можете опустить DLL из вашего /bin.
  • Если ваше приложение скомпилировано с версией 1.0.0.1 и 1.0.0.0 в GAC, тогда вы ДОЛЖНЫ поместить .dll в ваш /bin, чтобы игнорировать GAC. Произошла ошибка, если версия GAC старше требуемой версии вашего приложения, если вы не включили более новую версию в ваш /bin.

Надеюсь, это правильно...

Ответ 4

Вы можете просмотреть информацию о привязке в файле журнала с помощью средства просмотра привязки журнала сборки (Fuslogvw.exe), которое входит в комплект разработки программного обеспечения Windows (SDK).

s