Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Assemblys sind die grundlegenden Einheiten der Bereitstellung, Versionssteuerung, Wiederverwendung, Aktivierungsdefinition und Sicherheitsberechtigungen für . NET-basierte Anwendungen. Eine Assembly ist eine Sammlung von Typen und Ressourcen, die für die Zusammenarbeit und die Erstellung einer logischen Funktionalitätseinheit erstellt werden. Assemblys bilden ausführbare Dateien (.exe) oder Dynamic Link Library (.dll) und sind die Bausteine von .NET-Anwendungen. Sie stellen die Common Language Runtime mit den Informationen bereit, die sie kennen muss, um Typenimplementierungen zu kennen.
In .NET und .NET Framework können Sie eine Assembly aus einer oder mehreren Quellcodedateien erstellen. In .NET Framework können Assemblys ein oder mehrere Module enthalten. Auf diese Weise können größere Projekte geplant werden, sodass mehrere Entwickler an separaten Quellcodedateien oder Modulen arbeiten können, die kombiniert werden, um eine einzelne Assembly zu erstellen. Weitere Informationen zu Modulen finden Sie unter Vorgehensweise: Erstellen einer Assembly aus mehreren Dateien.
Assemblys verfügen über folgende Eigenschaften:
Assemblys werden als .exe - oder .dll-Dateien implementiert.
Für Bibliotheken, die auf .NET Framework abzielen, können Sie Assemblys zwischen Anwendungen freigeben, indem Sie sie im globalen Assemblycache (GAC) ablegen. Sie müssen den Assemblys starke Namen geben, bevor Sie sie zum globalen Assemblycache hinzufügen können. Weitere Informationen finden Sie unter Assemblys mit starkem Namen.
Assemblys werden nur in den Arbeitsspeicher geladen, wenn sie erforderlich sind. Wenn sie nicht verwendet werden, werden sie nicht geladen. Daher können Assemblys eine effiziente Möglichkeit zum Verwalten von Ressourcen in größeren Projekten sein.
Mithilfe der Spiegelung können Sie programmgesteuert Informationen zu einer Assembly abrufen. Weitere Informationen finden Sie unter Reflection (C#) oder Reflection (Visual Basic).
Sie können eine Assembly laden, um sie mithilfe der MetadataLoadContext Klasse in .NET und .NET Framework zu prüfen. MetadataLoadContext ersetzt die Assembly.ReflectionOnlyLoad Methoden.
Assemblys in der Common Language Runtime (CLR)
Assemblys stellen die Common Language Runtime mit den Informationen bereit, die sie kennen müssen, um Typenimplementierungen zu berücksichtigen. Für die Common Language Runtime sind Typen nur im Kontext einer Assembly vorhanden.
Eine Assembly definiert die folgenden Informationen:
Code, der von der Common Language Runtime ausgeführt wird. Jede Assembly kann nur einen Einstiegspunkt haben:
DllMain, ,WinMain, oderMain.Die Sicherheitsgrenze. Eine Assembly ist die Einheit, bei der Berechtigungen angefordert und erteilt werden. Weitere Informationen zu Sicherheitsgrenzen in Assemblys finden Sie unter Überlegungen zur Assemblysicherheit.
Die Typgrenze. Die Identität jedes Typs enthält den Namen der Assembly, in der er sich befindet. Ein Typ namens
MyType, der im Bereich einer Assembly geladen wird, ist nicht dasselbe wie ein Typ namensMyType, der im Bereich einer anderen Assembly geladen wird.Die Grenze für den Referenzbereich: Das Assemblymanifest verfügt über Metadaten, die zum Auflösen von Typen und Erfüllen von Ressourcenanforderungen verwendet werden. Das Manifest gibt die Typen und Ressourcen an, die außerhalb der Assembly verfügbar gemacht werden sollen, und listet andere Assemblys auf, von denen es abhängt. Common Intermediate Language (CIL)-Code in einer tragbaren ausführbaren Datei (Portable Executable, PE) wird nicht ausgeführt, es sei denn, er verfügt über ein zugeordnetes Assemblymanifest.
Die Versionsgrenze. Die Assembly ist die kleinste versionierbare Einheit in der Common Language Runtime. Alle Typen und Ressourcen in derselben Assembly werden als Einheit versioniert. Das Assemblymanifest beschreibt die Versionsabhängigkeiten, die Sie für abhängige Assemblys angeben. Weitere Informationen über die Versionsverwaltung finden Sie unter Assemblyversionsverwaltung.
Die Bereitstellungseinheit: Wenn eine Anwendung gestartet wird, müssen nur die Assemblys vorhanden sein, die die Anwendung anfänglich aufruft. Andere Assemblys, z. B. Assemblys, die Lokalisierungsressourcen oder Hilfsklassen enthalten, können bei Bedarf abgerufen werden. Mit diesem Prozess können Apps beim ersten Herunterladen einfach und dünn sein. Weitere Informationen zum Bereitstellen von Assemblys finden Sie unter Bereitstellen von Anwendungen.
Eine parallele Ausführungseinheit: Weitere Informationen zum Ausführen mehrerer Versionen einer Assembly finden Sie unter Assemblys und parallele Ausführung.
Erstellen einer Assembly
Assemblys können statisch oder dynamisch sein. Statische Assemblys werden auf einem Datenträger in PE-Dateien (portable ausführbare Dateien) gespeichert. Statische Assemblys können Schnittstellen, Klassen und Ressourcen wie Bitmaps, JPEG-Dateien und andere Ressourcendateien enthalten. Sie können auch dynamische Assemblys erstellen, die direkt aus dem Arbeitsspeicher ausgeführt werden und vor der Ausführung nicht auf dem Datenträger gespeichert werden. Sie können dynamische Assemblys auf dem Datenträger speichern, nachdem sie ausgeführt wurden.
Es gibt mehrere Möglichkeiten zum Erstellen von Assemblys. Sie können Entwicklungstools wie Visual Studio verwenden, die .dll oder .exe Dateien erstellen können. Sie können Tools im Windows SDK verwenden, um Assemblys mit Modulen aus anderen Entwicklungsumgebungen zu erstellen. Sie können auch Common Language Runtime-APIs wie System.Reflection.Emit verwenden, um dynamische Assemblys zu erstellen.
Kompilieren Sie Assemblys, indem Sie sie in Visual Studio erstellen, sie mit .NET Core-Befehlszeilenschnittstellentools erstellen oder .NET Framework-Assemblys mit einem Befehlszeilencompiler erstellen. Weitere Informationen zum Erstellen von Assemblys mit .NET CLI finden Sie in der Übersicht über .NET CLI.
Hinweis
Um eine Assembly in Visual Studio zu erstellen, wählen Sie im Menü " Erstellen " die Option "Erstellen" aus.
Assemblymanifest
Jede Assembly verfügt über eine Assemblymanifestdatei . Ähnlich wie bei einem Inhaltsverzeichnis, enthält ein Montagemanifest:
Die Identität der Assembly (Name und Version).
Eine Dateitabelle, die alle anderen Dateien beschreibt, aus denen die Assembly besteht, wie andere von Ihnen erstellte Assemblys, von denen Ihre .exe- oder .dll-Datei abhängt, sowie Bitmapdateien oder Readme-Dateien.
Eine Assemblyverweisliste, bei der es sich um eine Liste aller externen Abhängigkeiten handelt, z. B. .dlls oder andere Dateien. Assemblyverweise enthalten Verweise auf globale und private Objekte. Globale Objekte sind für alle anderen Anwendungen verfügbar. In .NET Core werden globale Objekte mit einer bestimmten .NET Core-Laufzeit gekoppelt. In .NET Framework befinden sich globale Objekte im globalen Assemblycache (GAC). System.IO.dll ist ein Beispiel für eine Assembly im GAC. Private Objekte müssen sich in einer Verzeichnisebene auf oder unter dem Verzeichnis befinden, in dem Ihre App installiert ist.
Assemblys enthalten Informationen zu Inhalt, Versionsverwaltung und Abhängigkeiten. Daher müssen sich die Anwendungen, die sie verwenden, nicht auf externe Quellen wie die Registrierung auf Windows-Systemen verlassen, um ordnungsgemäß zu funktionieren. Assemblys reduzieren .dll Konflikte und machen Ihre Anwendungen zuverlässiger und einfacher bereitzustellen. In vielen Fällen können Sie eine .NET-basierte Anwendung einfach durch das Kopieren der Dateien auf den Zielcomputer installieren. Weitere Informationen finden Sie unter Assemblymanifest.
Verweis auf eine Assembly hinzufügen
Um eine Assembly in einer Anwendung zu verwenden, müssen Sie einen Verweis darauf hinzufügen. Wenn auf eine Assembly verwiesen wird, sind alle zugänglichen Typen, Eigenschaften, Methoden und anderen Member ihrer Namespaces für Ihre Anwendung verfügbar, als wäre ihr Code Teil der Quelldatei.
Hinweis
Auf die meisten Assemblys aus der .NET-Klassenbibliothek wird automatisch verwiesen. Wenn auf eine System-Assembly nicht automatisch verwiesen wird, fügen Sie einen Verweis auf eine der folgenden Weisen hinzu:
- Fügen Sie für .NET und .NET Core einen Verweis auf das NuGet-Paket hinzu, das die Assembly enthält. Verwenden Sie entweder den NuGet-Paket-Manager in Visual Studio oder fügen Sie dem
<PackageReference>oder<PackageReference>ein Element für die Assembly hinzu. - Fügen Sie für .NET Framework mithilfe des Dialogfelds " Verweis hinzufügen " in Visual Studio oder der
-referenceBefehlszeilenoption für die C# - oder Visual Basic-Compiler einen Verweis auf die Assembly hinzu.
In C# können Sie zwei Versionen derselben Assembly in einer einzigen Anwendung verwenden. Weitere Informationen finden Sie unter externem Alias.
Verwandte Inhalte
| Titel | BESCHREIBUNG |
|---|---|
| Assemblyinhalte | Elemente, aus denen eine Assembly besteht. |
| Assemblymanifest | Daten im Assemblymanifest und wie sie in Assemblys gespeichert werden. |
| Globaler Assemblycache | Wie das GAC Assemblys speichert und verwendet. |
| Assemblies mit starkem Namen | Die Eigenschaften von Assemblys mit starken Namen |
| Überlegungen zur Assemblysicherheit | Funktionsweise der Sicherheitsmechanismen von Assemblys |
| Assemblyversionsverwaltung | Übersicht über die .NET Framework-Versionsverwaltungsrichtlinie. |
| Assemblypositionierung | Die Positionierung von Assemblys |
| Assemblys und parallele Ausführung | Verwenden Sie mehrere Versionen der Laufzeit oder einer Assembly gleichzeitig. |
| Ausgeben von dynamischen Methoden und Assemblys | Wie man dynamische Assemblys erstellt |
| Wie die Laufzeit Assemblys findet | Wie der .NET Framework Assemblyverweise zur Laufzeit aufgelöst wird. |
Referenz
Siehe auch
- .NET-Assembly-Dateiformat
- Freundesversammlungen
- Verweisassemblys
- Vorgehensweise: Laden und Entladen von Assemblys
- Anleitung: Verwenden und Debuggen der Assembly-Entladbarkeit in .NET Core
- Vorgehensweise: Ermitteln, ob eine Datei eine Assembly ist
- So überprüfen Sie die Inhalte einer Assembly mithilfe von MetadataLoadContext