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.
.NET definiert ein Binärdateiformat, eine Assembly, die zum vollständigen Beschreiben und Enthalten von .NET-Programmen verwendet wird. Assemblys werden für die Programme selbst sowie für abhängige Bibliotheken verwendet. Ein .NET-Programm kann als eine oder mehrere Assemblys ausgeführt werden, ohne andere erforderliche Artefakte, über die entsprechende .NET-Implementierung hinaus. Systemeigene Abhängigkeiten, einschließlich Betriebssystem-APIs, sind ein separates Problem und sind nicht im .NET-Assemblyformat enthalten, obwohl sie manchmal mit diesem Format (z. B. WinRT) beschrieben werden.
Jede CLI-Komponente enthält die Metadaten für Deklarationen, Implementierungen und Verweise, die für diese Komponente spezifisch sind. Daher werden die komponentenspezifischen Metadaten als Komponentenmetadaten bezeichnet; die resultierende Komponente wird als selbsterklärend bezeichnet – von ECMA 335 I.9.1, Komponenten und Assemblys.
Das Format wird vollständig angegeben und als ECMA 335 standardisiert. Alle .NET-Compiler und -Laufzeiten verwenden dieses Format. Das Vorhandensein eines dokumentierten und selten aktualisierten Binärformats ist ein großer Vorteil (wohl eine Anforderung) für die Interoperabilität. Das Format wurde in 2005 (.NET Framework 2.0) auf wesentliche Weise aktualisiert, um Generika und Prozessorarchitektur zu berücksichtigen.
Das Format ist CPU- und OS-agnostisch. Es wurde als Teil von .NET-Implementierungen verwendet, die auf viele Chips und CPUs abzielen. Während das Format selbst über das Windows-Erbe verfügt, ist es auf jedem Betriebssystem implementiert. Die wahrscheinlich wichtigste Wahl für die Interoperabilität des Betriebssystems besteht darin, dass die meisten Werte im little-endian-Format gespeichert werden. Es verfügt nicht über eine bestimmte Affinität zur Computerzeigergröße (z. B. 32-Bit, 64-Bit).
Das .NET-Assemblyformat ist auch sehr beschreibend über die Struktur eines bestimmten Programms oder einer bestimmten Bibliothek. Es beschreibt die internen Komponenten einer Assembly, insbesondere Assemblyverweise und definierte Typen sowie deren interne Struktur. Tools oder APIs können diese Informationen zur Anzeige lesen und verarbeiten oder programmgesteuerte Entscheidungen treffen.
Format
Das .NET-Binärformat basiert auf dem Windows PE-Dateiformat . Tatsächlich sind .NET-Klassenbibliotheken konforme Windows-PEs und scheinen auf den ersten Blick Windows Dynamic Link Libraries (DLLs) oder ausführbare Dateien der Anwendung (EXEs) zu sein. Dies ist eine sehr nützliches Eigenschaft von Windows, bei der sie als ausführbare Binärdateien erscheinen und ähnlich behandelt werden können (z. B. beim Laden des Betriebssystems, PE-Tools).
Assembly-Kopfzeilen aus ECMA 335 II.25.1: Struktur des Laufzeitdateiformats.
Baugruppen verarbeiten
Es ist möglich, Tools oder APIs zum Verarbeiten von Assemblys zu schreiben. Assemblyinformationen ermöglichen die Erstellung programmgesteuerter Entscheidungen zur Laufzeit, das Umschreiben von Assemblys, die Bereitstellung von API IntelliSense in einem Editor und das Generieren von Dokumentationen. System.Reflection, System.Reflection.MetadataLoadContextund Mono.Cecil sind gute Beispiele für Tools, die häufig zu diesem Zweck verwendet werden.