MetadataLoadContext.CoreAssembly Propiedad

Definición

Obtiene o establece el ensamblado que indica el "ensamblado del sistema" y que contiene los tipos más conocidos, como Int32.

public:
 property System::Reflection::Assembly ^ CoreAssembly { System::Reflection::Assembly ^ get(); };
public System.Reflection.Assembly CoreAssembly { get; }
public System.Reflection.Assembly? CoreAssembly { get; }
member this.CoreAssembly : System.Reflection.Assembly
Public ReadOnly Property CoreAssembly As Assembly

Valor de propiedad

Assembly

Instancia de Assembly.

Comentarios

El ensamblado principal se trata de forma diferente a otros ensamblados porque las referencias a estos tipos conocidos no incluyen la referencia de ensamblado, a diferencia de los tipos normales.

Normalmente, este ensamblado se denomina "mscorlib" o "netstandard". Si no se encuentra el ensamblado principal, el valor será null, y muchos otros métodos de reflexión, incluidos los que analizan firmas de método, producirán una excepción.

CoreAssembly Se determina pasando el coreAssemblyName parámetro pasado al MetadataAssemblyResolver constructor al MetadataAssemblyResolver.Resolve método .

Si no se especificó ningún coreAssemblyName argumento en el constructor de MetadataLoadContext, se usan los valores predeterminados, incluidos "mscorlib", "System.Runtime" y "netstandard".

El ensamblado principal designado no necesita contener directamente los tipos principales. Puede escribir reenviarlos a otros ensamblados. Por lo tanto, es perfectamente permisible utilizar la fachada mscorlib como ensamblado principal designado.

Tenga en cuenta que System.Runtime no es un ensamblado principal ideal porque excluye algunos de los tipos de atributos pseudo-personalizados relacionados con la interoperabilidad, como DllImportAttribute. Sin embargo, puede servir si no tiene ningún interés en esos atributos. La API CustomAttributes omitirá esos atributos si el ensamblado principal no incluye los tipos necesarios.

El ensamblado principal no se carga hasta que sea necesario. Las SIGUIENTES API no desencadenan la búsqueda del ensamblado principal:

Si no se encuentra un ensamblado principal o si faltan tipos de ensamblado principal, esto afectará al comportamiento de como MetadataLoadContext se indica a continuación:

  • Las API que necesitan analizar firmas o especificaciones de tipos y devolver los resultados a medida Type que los objetos producirán una excepción. Por ejemplo:

  • Las API que necesitan comparar tipos con tipos conocidos no producirán una excepción y la comparación se evaluará como false. Por ejemplo, si no especifica un ensamblado principal, IsPrimitive devolverá false todo, incluso los tipos denominados Int32. Del mismo modo, Type.GetTypeCode volverá Object para todo.

  • Si una entidad de metadatos establece marcas que aparecen como un atributo pseudo-personalizado y el ensamblado principal no contiene el tipo de atributo pseudo-personalizado, el constructor necesario o cualquiera de los tipos de parámetros del constructor, no se producirá .MetadataLoadContext Omitirá el atributo pseudo-personalizado de la lista de atributos devueltos.

Se aplica a