Алгоритм загрузки неуправляемых (собственных) библиотек
Неуправляемые библиотеки обнаруживаются и загружаются по специальному алгоритму, который состоит из нескольких этапов.
Следующий алгоритм описывает, как загружаются собственные сборки через PInvoke
.
Алгоритм PInvoke
для загрузки библиотек
PInvoke
использует следующий алгоритм при попытке загрузить неуправляемую сборку.
Определяется
active
AssemblyLoadContext. Для неуправляемой библиотекиactive
AssemblyLoadContext получает значение, соответствующее сборке, которая определяетPInvoke
.Для
active
AssemblyLoadContext выполняется попытка найти сборку в следующем порядке приоритета:Проверяется кэш.
Вызывается текущий делегат System.Runtime.InteropServices.DllImportResolver, заданный функцией NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver).
Вызывается функция AssemblyLoadContext.LoadUnmanagedDll в
active
AssemblyLoadContext.Проверяется кэш экземпляров AppDomain и выполняется логика зондирования неуправляемой (собственной) библиотеки.
Вызывается событие AssemblyLoadContext.ResolvingUnmanagedDll для
active
AssemblyLoadContext.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по