非受控程式庫由涉及多個階段的演算法來定位並載入。
下列演算法說明原生程式庫透過 PInvoke 載入的過程。
PInvoke 載入程式庫演算法
PInvoke 會於試圖載入非受控組件時使用下列演算法,以便:
決定
activeAssemblyLoadContext。 針對非受控載入程式庫,activeAssemblyLoadContext 具備能定義PInvoke的組件。針對
activeAssemblyLoadContext,請試著依照下列優先順序尋找組件:檢查快取。
呼叫由 System.Runtime.InteropServices.DllImportResolver 語言函式設定的現有 NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver) 委派。
在 AssemblyLoadContext.LoadUnmanagedDll AssemblyLoadContext 上呼叫
active語言函式。檢查 AppDomain 執行個體的快取並執行非受控 (原生) 程式庫探查 邏輯。
為 AssemblyLoadContext.ResolvingUnmanagedDll AssemblyLoadContext 引發
active事件。