관리되지 않는 라이브러리는 다양한 단계를 포함하는 알고리즘으로 배치되고 로드됩니다.
다음 알고리즘에서는 PInvoke를 통해 네이티브 라이브러리를 로드하는 방법을 설명합니다.
PInvoke 로드 라이브러리 알고리즘
PInvoke는 관리되지 않는 어셈블리를 로드하려고 할 때 다음 알고리즘을 사용합니다.
activeAssemblyLoadContext를 확인합니다. 관리되지 않는 로드 라이브러리의 경우activeAssemblyLoadContext는PInvoke를 정의하는 어셈블리를 사용합니다.activeAssemblyLoadContext의 경우 다음을 통해 우선 순위를 기준으로 어셈블리를 찾습니다.해당 캐시를 확인하는 중입니다.
System.Runtime.InteropServices.DllImportResolver 함수로 설정된 현재 NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver) 대리자를 호출하는 중입니다.
AssemblyLoadContext.LoadUnmanagedDll AssemblyLoadContext에서
active함수를 호출하는 중입니다.AppDomain 인스턴스의 캐시를 확인하고 관리되지 않는(네이티브) 라이브러리 검색 논리를 실행합니다.
AssemblyLoadContext.ResolvingUnmanagedDll AssemblyLoadContext에 대한
active이벤트를 발생시킵니다.
.NET