Ich lerne .NET Framework und lese Metadaten und Manifest .
"Metadaten sind Daten über Daten und Manifest sind Daten über die Montage !!"
F: Also ist nicht eine Metadaten Manifest?
Was sind dann die Unterschiede?
Manifest verwaltet die Informationen zu den Baugruppen wie Version, Name Gebietsschema und ein optionaler starker Name, der eindeutige Identifizierung der Baugruppe Dieses Manifest Informationen werden von der CLR verwendet. Das Manifest enthält auch die Sicherheitsanforderungen, um diese Baugruppe zu überprüfen. Es auch enthält die Namen und Hashes aller Dateien die Versammlung. Das .NET-Assemblymanifest enthält a kryptographischer Hash der verschiedenen Module in der Assembly. Und wenn die Assembly geladen ist, berechnet die CLR die Hash der Module zur Hand und vergleicht es mit der eingebetteter Hash. Wenn der zur Laufzeit generierte Hash unterschiedlich ist von dem, das im Manifest gefunden wird, lehnt .NET ab, das zu laden Assembly und löst eine Ausnahme aus.
Metadaten sind Daten über die Daten. Metadaten ergeben die Typen, die in dieser Baugruppe verfügbar sind, nämlich Klassen, Schnittstellen, Enums, Strukturen, etc., und ihre Namespaces enthalten, die Name jedes Typs, seine Sichtbarkeit / Geltungsbereich, seine Basisklasse, die implementierten Schnittstellen, ihre Methoden und ihr Umfang, und die Parameter jeder Methode, die Eigenschaften des Typs und so weiter. Die Assemblymetadaten werden von der übergeordneten Ebene generiert Compiler automatisch aus den Quelldateien. Der Compiler bettet die Metadaten in die Ziel-Ausgabedatei ein, ein .exe oder ein .netmodul im Fall von Multi-Modul Montage.
Hier ist die einfachste Antwort.
Assembly: Eine oder mehrere Dateien, aus denen Ihr Programm besteht. Normalerweise Exe oder dll oder eine Kombination aus diesen und einigen anderen Dateien
MetaData: Enthält beides 1) Assemblymetadaten 2) Metadaten eingeben.
1) Assembly-Metadaten werden auch als MANIFEST bezeichnet. Sie enthalten den Namen des Assembly, Versionen, Kultur, Informationen zum starken Namen, referenzierte Assembly-Informationen ... usw.
2) Typ Metadaten sind die exportierten Datentypen und Methoden der Baugruppe.
Manifest: Es speichert die Informationen (wie Name der Baugruppen, Version usw.) über die Baugruppen, die CLR benötigt, um die Baugruppen zu laden.
Metadaten: Es speichert die Details von Assemblys wie Methodenname, Mitglieder usw.
Beide Dateien werden automatisch vom Compiler generiert, wenn der Code in MSIL konvertiert wird.
Metadaten beschreiben die Inhalte in einer Assembly, während das Manifest die Assembly selbst beschreibt und die logischen Attribute bereitstellt, die von allen Modulen und allen Komponenten in der Assembly gemeinsam verwendet werden. Das Manifest enthält den Assemblynamen, die Versionsnummer, das Gebietsschema und einen optionalen starken Namen, der die Assembly eindeutig identifiziert.
Metadaten:
Metadaten sind die vollständige Möglichkeit, zu beschreiben, was sich in einer .NET-Assembly befindet. Das Eintauchen in die Metadaten ergibt die Typen, die in dieser Assembly verfügbar sind. nämlich. Klassen, Schnittstellen, Enums, Strukturen usw. und deren Inhalt Namespaces, der Name jedes Typs, seine Sichtbarkeit / Geltungsbereich, seine Basis Klasse, die von ihr implementierten Schnittstellen, ihre Methoden und ihr Umfang und die Parameter jeder Methode, die Eigenschaften des Typs und so weiter. Die Versammlung Metada wird von den High-Level-Compilern automatisch aus dem generiert Quelldaten. Der Compiler bettet die Metadaten in die Zielausgabe ein Datei, eine DLL, eine .exe oder ein .NetModul im Fall von Multi-Modul Versammlung. Bei einer Multimodul-Baugruppe schon einmal das Modul Enthält IL Die Metadaten müssen eingebettet sein, um die Typen zu beschreiben in diesem Modul. Jeder für .NET CLR bestimmte Compiler ist erforderlich um die Metadaten in der Ausgabedatei zu generieren und einzubetten, und das Metadaten müssen in einem Standardformat vorliegen. .NET Reflection ausführlich verwendet die Metadateninformationen, um die Typinformationen zu kennen dynamisch.
Metadaten sind zusätzliche Informationen in einer verwalteten Assembly, die Dinge wie Typen, Typnamen, Methodennamen usw. beschreiben (im Wesentlichen die Informationen, die Sie von den Reflection-Services abrufen können). Weitere Informationen finden Sie Ссылка .
Baugruppenmanifest:
Metadaten beschreiben die Inhalte in einer Assembly, während das Manifest beschreibt die Assembly selbst und stellt die gemeinsamen logischen Attribute zur Verfügung durch alle Module und alle Komponenten in der Montage. Das Manifest enthält den Assemblynamen, die Versionsnummer, das Gebietsschema und optional starker Name, der die Baugruppe eindeutig identifiziert. Dieses Manifest Informationen werden von der CLR verwendet. Das Manifest enthält auch die Sicherheitsanforderungen, um diese Baugruppe zu überprüfen. Es enthält auch die Namen und Hashes aller Dateien, aus denen die Assembly besteht. Das Netz Das Assemblymanifest enthält einen kryptografischen Hash für verschiedene Module bei der Montage. Und wenn die Assembly geladen wird, berechnet die CLR neu der Hash der Module zur Hand und vergleicht sie mit den eingebetteten Hash. Wenn sich der zur Laufzeit generierte Hash von dem in Das Manifest .NET verweigert das Laden der Assembly und löst ein Ausnahme. Dies unterscheidet sich von COM, unter COM ist es möglich Tauschen Sie eine ursprüngliche DLL oder EXE-Datei gegen eine andere aus, die den gleichen Typ haben Bibliotheken / Schnittstellen und verursachen Schäden am System, indem sie ausgeführt werden unzüchtiger Code. Das Manifest wird auch automatisch von der High-Level-Compiler aus den Quelldateien aller Module in der Versammlung. Das Manifest wird nur einmal in eine physische Datei eingebettet Da es für alle Module in einer Baugruppe üblich ist, während die Metadaten müssen alle Module eingebettet werden. Die .NET CLR kompatibel Compiler müssen das Manifest generieren und es sollte im Standard sein Format. Mit dem Manifest .NET werden Informationen über andere erfasst referenzierte Baugruppen. Dies gewährleistet die Versionskompatibilität und die Assembly kann mit genau der vertrauenswürdigen Menge anderer interagieren Baugruppen erwartet es. Das Manifest enthält jede referenzierte Assembly name, sein öffentlicher Schlüssel (wenn ein starker Name verfügbar ist), seine Version Nummer und Gebietsschema. Beim Ausführen dieser Assembly garantiert .NET dies nur diese spezifischen Baugruppen werden verwendet, und das ist nur kompatibel Versionen werden geladen.
"Manifest" ist ein ziemlich überladener Begriff. In .NET sind ein "Assembly-Manifest" einige Metadaten in einer Assembly, die Versionsverwaltung beschreiben. Sehen Sie hier Ссылка für weitere Details.
Sie können mehr über das Baugruppenmanifest hier
lesenMetadaten über die gesamte Baugruppe und die Module werden als Manifest
bezeichnet