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