Ladealgorithmus für nicht verwaltete (native) Bibliotheken
Nicht verwaltete Bibliotheken werden in mehreren Schritten über einen Algorithmus gesucht und geladen.
Der folgende Algorithmus beschreibt, wie native Bibliotheken über PInvoke
geladen werden.
Der Algorithmus PInvoke
für das Laden von Bibliotheken
PInvoke
verwendet beim Versuch, eine nicht verwaltete Assembly zu laden, den folgenden Algorithmus:
Ermitteln Sie den
active
AssemblyLoadContext. Beim Laden einer nicht verwalteten Bibliothek ist deractive
AssemblyLoadContext der mit der Assembly, diePInvoke
definiert.Versuchen Sie, die Assembly für den
active
AssemblyLoadContext in der Reihenfolge nach Priorität zu suchen:Überprüfen des Caches
Aufrufen des aktuellen System.Runtime.InteropServices.DllImportResolver-Delegaten, der von der NativeLibrary.SetDllImportResolver(Assembly, DllImportResolver)-Funktion festgelegt wird
Aufrufen der AssemblyLoadContext.LoadUnmanagedDll-Funktion für den
active
AssemblyLoadContextÜberprüfen des Caches der AppDomain-Instanz und Ausführen der Logik für die Überprüfung nicht verwalteter (nativer) Bibliotheken
Auslösen des AssemblyLoadContext.ResolvingUnmanagedDll-Ereignisses für den
active
AssemblyLoadContext