В каком порядке выполняется поиск местоположений для загрузки библиотек DLL, на которые даны ссылки?

StackOverflow https://stackoverflow.com/questions/49972

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Редактировать http://msdn.microsoft.com/en-us/library/aa720133.aspx объясняет этот процесс более подробно.

Другие советы

Я нашел статья ссылка на статью MSDN о Порядок поиска библиотеки DLL это говорит

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

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

0. Global assembly cache

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top