Dll и в мусорном ведре и в gac, какой привыкает?

В Rails-Core есть тема об этом - http://groups.google.com/group/rubyonrails-core/browse_thread/thread/88519ef5a53088a1/c01ba447c6dc0de7?lnk=raot

Цитировать Иегуду Каца

«Есть вещи, которые код C требует в 1.9, которые замедляют работу. Одним из таких примеров является повторная проверка $ LOAD_PATH, чтобы убедиться, что все это расширяется при каждом требовании. Это то, что должно быть решено с помощью ruby-core. Я открою тикет на Redmine, если его еще нет. "

Я также испытываю эту проблему, и проблема $ LOAD_PATH кажется потенциальной причина. Будем надеяться, что это скоро исправят.

68
задан John Boker 11 June 2009 в 13:40
поделиться

3 ответа

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

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

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

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

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

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

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

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

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

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

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

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

79
ответ дан 24 November 2019 в 14:20
поделиться

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

  • Если ваше приложение скомпилировано с версией 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.

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

2
ответ дан 24 November 2019 в 14:20
поделиться

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

s

0
ответ дан 24 November 2019 в 14:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: