MetadataLoadContext.CoreAssembly Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft die Assembly ab, die die Systemassembly einschließlich bekannter Typen wie Int32bezeichnet, oder legt diese fest.
public:
property System::Reflection::Assembly ^ CoreAssembly { System::Reflection::Assembly ^ get(); };
public System.Reflection.Assembly? CoreAssembly { get; }
member this.CoreAssembly : System.Reflection.Assembly
Public ReadOnly Property CoreAssembly As Assembly
Eigenschaftswert
Eine Assembly-Instanz.
Hinweise
Die Kernassembly wird anders behandelt als andere Assemblys, da Verweise auf diese bekannten Typen im Gegensatz zu normalen Typen den Assemblyverweis nicht enthalten.
In der Regel wird diese Assembly als "mscorlib" oder "netstandard" bezeichnet. Wenn die Kernassembly nicht gefunden werden kann, ist null
der Wert , und viele andere Reflexionsmethoden, einschließlich derjenigen, die Methodensignaturen analysieren, lösen eine Ausnahme aus.
Der CoreAssembly
wird bestimmt, indem der an den coreAssemblyName
MetadataAssemblyResolver Konstruktor übergebene Parameter an die MetadataAssemblyResolver.Resolve -Methode übergeben wird.
Wenn im Konstruktor von MetadataLoadContextkein coreAssemblyName
Argument angegeben wurde, werden Standardwerte verwendet, einschließlich "mscorlib", "System.Runtime" und "netstandard".
Die angegebene Kernassembly muss die Kerntypen nicht direkt enthalten. Er kann sie an andere Assemblys weiterleiten. Daher ist es durchaus zulässig, die mscorlib-Fassade als designierte Kernbaugruppe zu verwenden.
Beachten Sie, dass System.Runtime es sich nicht um eine ideale Kernassembly handelt, da einige der interopbezogenen pseudobenutzerdefinierten Attributtypen wie DllImportAttributeausgeschlossen werden. Es kann jedoch dienen, wenn Sie kein Interesse an diesen Attributen haben. Die CustomAttributes-API überspringt diese Attribute, wenn die Kernassembly nicht die erforderlichen Typen enthält.
Die Kernassembly wird erst geladen, wenn dies erforderlich ist. Die folgenden APIs lösen die Suche nach der Kernassembly nicht aus:
- MetadataLoadContext.LoadFromStream
- MetadataLoadContext.LoadFromAssemblyPath
- MetadataLoadContext.LoadFromByteArray
- Assembly.GetName
- Assembly.FullName
- Assembly.GetReferencedAssemblies
- Assembly.GetTypes
- Assembly.DefinedTypes
- Assembly.GetExportedTypes
- Assembly.GetForwardedTypes
- Assembly.GetType(String, Boolean, Boolean)
- Type.Name
- Type.FullName
- Type.AssemblyQualifiedName
Wenn eine Kernassembly nicht gefunden werden kann oder die Kernassembly keine Typen aufweist, wirkt sich dies wie folgt auf das Verhalten der-Assembly MetadataLoadContext aus:
APIs, die Signaturen oder Typespecs analysieren und die Ergebnisse als Type Objekte zurückgeben müssen, lösen eine Ausnahme aus. Beispiel:
APIs, die Typen mit bekannten Kerntypen vergleichen müssen, lösen keine Ausnahme aus, und der Vergleich wird mit
false
ausgewertet. Wenn Sie z. B. keine Kernassembly angeben, IsPrimitive wird für alles zurückgegebenfalse
, auch für Typen mit dem Namen Int32. Type.GetTypeCode In ähnlicher Weise wird für alles zurückgegebenObject.Wenn eine Metadatenentität Flags festlegt, die als pseudobenutzerdefiniertes Attribut angezeigt werden, und die Kernassembly nicht den pseudobenutzerdefinierten Attributtyp, den erforderlichen Konstruktor oder einen der Parametertypen des Konstruktors enthält, MetadataLoadContext wird nicht ausgelöst. Das pseudobenutzerdefinierte Attribut wird aus der Liste der zurückgegebenen Attribute weggelassen.