Мы выяснили, откуда общеязыковая среда
выполнения CLR знает, какие версии сборки
удовлетворят условиям разрешения ссылки.
Но откуда общеязыковая среда выполнения CLR
узнает, где сборка постоянно хранится на
диске? Если сборка с нужной версией была
загружена предварительно потому, что ранее
в программе уже встретилась другая ссылка
на эту сборку, то эта сборка уже
используется. Если сборка имеет строгое имя,
то проверяется кэш сборки; если в нем
находится правильная версия, то
используется найденная там сборка.
В файле конфигурации есть несколько
<codeBase version="l.1.1.1" href="http://www.abc.com/
Customer.dll" />
<codeBase version="l.1.1.2" href="flie:///c:\AcmeGui\
Customer.dll" />
Чтобы использовать элемент Codebase (Кодовая
страница) вне каталога приложения или
подкаталогов, требуется строгое имя. Если
это условие не удовлетворяется, независимо
от того, действительно ли найдена требуемая
сборка, процесс связывания останавливается.
Если сборка не найдена, генерируется
исключение.
Если элемент Codebase (Кодовая страница) не
был найден в файле конфигурации, среда
времени выполнения продолжает исследовать
сборку Теперь весь поиск ведется
относительно каталога, в котором
выполняется приложение. Такой каталог
называется базой (ядром, основанием или
уровнем отсчета) приложения (application base)
Сначала среда времени выполнения ищет в
ядре приложения. Затем она смотрит в любых
подкаталогах ядра приложения, которые
имеют то же самое имя, что и сборка. Если в
запросе определена культура, то среда
времени выполнения ищет только подкаталог
сборки в подкаталоге с названием (именем)
требуемой культуры.
Наконец, в разделе assemblyBinding файла конфигурации можно определить атрибут
privatePath. Этот атрибут представляет собой список подкаталогов ядра приложения.
Подкаталоги в этом списке отделяются точкой с запятой, именно в них и осуществляется
поиск.
<probing privatePath="\bin;\assemb" />
Атрибут privatePath можно также установить с помощью Инструмента администрирования .NET (.NET Admin Tool) на вкладке свойств приложения.