Понимание управления ссылками на сборки ASP.NET в файле Web.config - PullRequest
7 голосов
/ 29 июня 2011

У меня есть простое сомнение: у меня есть внешняя сборка, на которую я хочу сослаться. У меня есть приложение Asp.Net. Я хочу использовать эту сборку в своем приложении Asp.Net.

Я добавляю ссылку, и VS делает просто помещая мою dll в подкаталог Bin моего веб-сайта.

Я думал, что VS изменил бы мой файл web.config, добавив внешние ссылки ... Так происходит ли это только при ссылке на сборки в GAC ??? (что имеет смысл, если требуются публичные токены и версии).

Thankyou

1 Ответ

6 голосов
/ 29 июня 2011

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

  1. Проверка на перенаправления - если сборка имеет строгое имя, CLR сначала проверит соответствующую конфигурацию (app.config, web.config и т. Д.), Чтобы увидеть, есть ли какие-либо обязательные перенаправления указаны. Переадресация привязки позволяет CLR сказать , где я должен загрузить v1.0.0.0, вместо загрузки v2.0.0.0 . Если перенаправления привязки не найдено для сборки со строгим именем, он проверит файл политики в GAC, а если файл политики не найден, он проверит machine.config. Если перенаправление привязки не указано, CLR будет использовать имя сборки, указанное в манифесте вызывающей сборки, для загрузки сборки.

  2. Проверьте, загружена ли сборка уже - CLR определяет, была ли ранее загружена сборка, и использует ли она ту же загруженную сборку, в противном случае она продолжается .. .

  3. Загрузка сборки из GAC - Если сборка ранее не могла быть загружена и имеет строгое имя, CLR попытается загрузить сборку из глобального кэша сборок.

  4. CodeBase - Если CLR все еще не может найти сборку, он будет использовать путь codeBase, чтобы попытаться найти сборку.

  5. Зондирование - Если CLR все еще не может найти сборку, он проверит путь зондирования сборки. Путь проверки по умолчанию - это базовый путь приложения AppDomain, в который загружаются сборки.

(Это все взято из замечательной статьи под названием Понимание .Net сборок и ссылок ).

В случае вашего веб-приложения CLR по-прежнему выполняет все вышеперечисленное, но базовый путь к приложению AppDomain - это папка /bin в вашем приложении IIS.

...