В каком порядке ищутся местоположения для загрузки ссылочных библиотек DLL? - PullRequest
52 голосов
/ 08 сентября 2008

Я знаю, что .NET Framework ищет ссылочные библиотеки DLL в нескольких местах

  • Глобальный кэш сборок (GAC)
  • Любые частные пути, добавленные в домен приложений
  • Текущий каталог исполняемой сборки

В каком порядке ищутся эти местоположения? Прекращается ли поиск библиотеки DLL, если найдено совпадение, или она продолжается во всех местах (и если да, то как разрешаются конфликты)?

Также, пожалуйста, подтвердите или отклоните эти местоположения и укажите любые другие местоположения, которые я не упомянул.

Ответы [ 3 ]

54 голосов
/ 08 сентября 2008

Загрузка сборки - довольно сложный процесс, который зависит от множества различных факторов, таких как файлы конфигурации, политики издателя, настройки домена приложения, хосты CLR, частичные или полные имена сборок и т. Д.

Простая версия заключается в том, что сначала GAC, а затем частные пути. % PATH% никогда не используется.

Лучше всего использовать Просмотр журнала привязки сборки (Fuslogvw.exe) для устранения проблем с загрузкой сборки.

EDIT http://msdn.microsoft.com/en-us/library/aa720133.aspx объясняет процесс более подробно.

6 голосов
/ 08 сентября 2008

Я нашел статью , ссылающуюся на статью MSDN о Порядок поиска DLL , в которой написано

Для зависимостей управляемого кода Global Assembly Cache всегда преобладает; локальная сборка в приложении каталог не будет поднят, если есть существующий (или более новый с политика) копия в GAC.

Учитывая это, я думаю, что список MSDN правильный с одним добавлением

0. Global assembly cache
2 голосов
/ 08 сентября 2008

"Больше не выполняется текущий поиск в текущем каталоге при загрузке DLL! Это изменение также было сделано в Windows XP с пакетом обновления 1 (SP1). Поведение по умолчанию теперь заключается в том, чтобы сначала просматривать все системные расположения, затем текущий каталог и, наконец, любые пользовательские пути. "

(ref. http://weblogs.asp.net/pwilson/archive/2003/06/24/9214.aspx)

Порядок поиска по умолчанию, который может быть изменен приложением, также описан в MSDN: http://msdn.microsoft.com/en-us/library/ms682586.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...