В каком порядке размещаются местоположения для загрузки ссылочных библиотек DLL?

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

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

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

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

3 Solutions collect form web for “В каком порядке размещаются местоположения для загрузки ссылочных библиотек DLL?”

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

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

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

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

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

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

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

  0. Глобальный сборный кеш 

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

(ссылка http://weblogs.asp.net/pwilson/archive/2003/06/24/9214.aspx )

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

  • Точка входа в систему EncodePointer не может находиться в файле kernel32.dll
  • Когда использовать динамические и статические библиотеки
  • Исключение BadImageFormatException при загрузке 32-разрядной библиотеки DLL, целью является x86
  • Простая C # DLL - как мне ее назвать из Excel, Access, VBA, VB6?
  • Загрузить 32-битную библиотеку DLL в 64-битном приложении
  • Не удалось загрузить DLL (модуль не найден HRESULT: 0x8007007E)
  • Как я могу исправить ошибки «DllRegisterServer entry point not found» в Windows 7?
  • Установить пользовательский путь к ссылочным DLL?
  • Вставка одной dll внутри другого в качестве встроенного ресурса, а затем вызов ее из моего кода
  • Разрешение LNK4098: defaultlib 'MSVCRT' конфликтует с
  • MSVCR100.dll отсутствует ошибка даже там
  • Interesting Posts

    Что мешает переписывать CD-R?

    Потеря истории Bash при использовании histappend

    Когда использовать интерфейс вместо абстрактного classа и наоборот?

    Excel – отобразить текст, отличный от фактического значения?

    Клиент отправляет запрос SOAP и получает ответ

    Имеет ли профиль Firefox в Dropbox хорошую комбинацию?

    Можете ли вы хранить компакт-диски / DVD-диски в огнестойком сейфе?

    Редактировать контекстные меню правой кнопкой мыши в Windows 7

    Двойная виртуализация против двойной загрузки или единой виртуализации

    Цепочки загрузчиков для необычной настройки

    Настройка взаимодействия с сервером с двумя мониторами поверх клиента с одним монитором

    Как подключить ярлык «Visual Studio 2010 Documentation» к панели задач Windows 7?

    Программное обеспечение для рисования / редактирования синтаксиса операторов SQL

    Как скрыть обновления в Windows Updates без GUI

    Как читать и записывать файл в C #

    Давайте будем гением компьютера.