Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
Verwaltete Assemblys werden über einen aus mehreren Schritten bestehenden Algorithmus gesucht und geladen.
Für alle verwalteten Assemblys – mit Ausnahme von Satellitenassemblys und WinRT
-Assemblys – wird derselbe Algorithmus verwendet.
Das am häufigsten angewandte Verfahren, um das Laden einer verwalteten Assembly auszulösen, ist ein statischer Assemblyverweis. Diese Verweise werden vom Compiler immer dann eingefügt, wenn der Code einen in einer anderen Assembly definierten Typ verwendet. Diese Assemblys werden nach Bedarf von der Runtime geladen (load-by-name
). Der genaue Zeitpunkt, zu dem die statischen Assemblyverweise geladen werden, ist nicht angegeben. Er kann zwischen Runtimeversionen variieren und wird durch Optimierungen wie Inlining beeinflusst.
Die direkte Verwendung folgender APIs löst das Laden ebenfalls aus:
API | BESCHREIBUNG | Active AssemblyLoadContext |
---|---|---|
AssemblyLoadContext.LoadFromAssemblyName | Load-by-name |
Die this-Instanz. |
AssemblyLoadContext.LoadFromAssemblyPath AssemblyLoadContext.LoadFromNativeImagePath |
Aus dem Pfad laden | Die this-Instanz. |
AssemblyLoadContext.LoadFromStream | Aus einem Objekt laden | Die this-Instanz. |
Assembly.LoadFile | Aus dem Pfad in eine neue AssemblyLoadContext-Instanz laden | Die neue AssemblyLoadContext-Instanz. |
Assembly.LoadFrom | Aus dem Pfad in die AssemblyLoadContext.Default-Instanz laden Fügt einen AppDomain.AssemblyResolve-Handler hinzu. Der Handler lädt die Abhängigkeiten der Assembly aus dem zugehörigen Verzeichnis. |
Die AssemblyLoadContext.Default-Instanz. |
Assembly.Load(AssemblyName) Assembly.Load(String) Assembly.LoadWithPartialName |
Load-by-name . |
Vom Aufrufer abgeleitet. Verwenden Sie bevorzugt AssemblyLoadContext-Methoden. |
Assembly.Load(Byte[]) Assembly.Load(Byte[], Byte[]) |
Aus dem Objekt in eine neue AssemblyLoadContext-Instanz laden | Die neue AssemblyLoadContext-Instanz. |
Type.GetType(String) Type.GetType(String, Boolean) Type.GetType(String, Boolean, Boolean) |
Load-by-name . |
Vom Aufrufer abgeleitet. Verwenden Sie bevorzugt Type.GetType-Methoden mit einem assemblyResolver -Argument. |
Assembly.GetType | Wenn der Typ-name einen von der Assembly qualifizierten generischen Typ beschreibt, wird Load-by-name auslöst. |
Vom Aufrufer abgeleitet. Bevorzugen Sie Type.GetType, wenn Sie von der Assembly qualifizierte Typnamen verwenden. |
Activator.CreateInstance(String, String) Activator.CreateInstance(String, String, Object[]) Activator.CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Load-by-name . |
Vom Aufrufer abgeleitet. Verwenden Sie bevorzugt Activator.CreateInstance-Methoden, die ein Type-Argument übernehmen. |
Der folgende Algorithmus beschreibt, wie die Runtime eine verwaltete Assembly lädt.
Ermitteln Sie den active
AssemblyLoadContext.
active
AssemblyLoadContext die Instanz, die die verweisende Assembly geladen hat.active
AssemblyLoadContext explizit angegeben.active
AssemblyLoadContext ab. Für diese APIs wird die AssemblyLoadContext.CurrentContextualReflectionContext-Eigenschaft verwendet. Wenn der Wert null
ist, wird die abgeleitete AssemblyLoadContext-Instanz verwendet.Für die Load-by-name
-Methoden lädt der active
-AssemblyLoadContext die Assembly in der folgenden Prioritätsreihenfolge:
cache-by-name
.cache-by-name
hinzugefügt.Für die anderen zu ladenden Typen lädt der active
-AssemblyLoadContext die Assembly in der folgenden Prioritätsreihenfolge:
cache-by-name
.cache-by-name
-Element der active
-AssemblyLoadContext-Instanz ein Verweis hinzugefügt.In jedem Fall wird beim neuen Laden einer Assembly das AppDomain.AssemblyLoad-Ereignis ausgelöst.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben:
Ereignisse
17. März, 23 Uhr - 21. März, 23 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenTraining
Lernpfad
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization