Ler en inglés

Compartir por


AssemblyName Clase

Definición

Describe la identidad única de un ensamblado en su totalidad.

C#
public sealed class AssemblyName
C#
public sealed class AssemblyName : ICloneable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
C#
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public sealed class AssemblyName : ICloneable, System.Runtime.InteropServices._AssemblyName, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
C#
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class AssemblyName : ICloneable, System.Runtime.InteropServices._AssemblyName, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
Herencia
AssemblyName
Atributos
Implementaciones

Ejemplos

En este ejemplo se muestra cómo usar varias clases de reflexión para analizar los metadatos contenidos en un ensamblado.

C#
using System;
using System.Reflection;

class Module1
{
    public static void Main()
    {
        // This variable holds the amount of indenting that
        // should be used when displaying each line of information.
        Int32 indent = 0;
        // Display information about the EXE assembly.
        Assembly a = typeof(Module1).Assembly;
        Display(indent, "Assembly identity={0}", a.FullName);
        Display(indent+1, "Codebase={0}", a.CodeBase);

        // Display the set of assemblies our assemblies reference.

        Display(indent, "Referenced assemblies:");
        foreach (AssemblyName an in a.GetReferencedAssemblies() )
        {
             Display(indent + 1, "Name={0}, Version={1}, Culture={2}, PublicKey token={3}", an.Name, an.Version, an.CultureInfo.Name, (BitConverter.ToString (an.GetPublicKeyToken())));
        }
        Display(indent, "");

        // Display information about each assembly loading into this AppDomain.
        foreach (Assembly b in AppDomain.CurrentDomain.GetAssemblies())
        {
            Display(indent, "Assembly: {0}", b);

            // Display information about each module of this assembly.
            foreach ( Module m in b.GetModules(true) )
            {
                Display(indent+1, "Module: {0}", m.Name);
            }

            // Display information about each type exported from this assembly.

            indent += 1;
            foreach ( Type t in b.GetExportedTypes() )
            {
                Display(0, "");
                Display(indent, "Type: {0}", t);

                // For each type, show its members & their custom attributes.

                indent += 1;
                foreach (MemberInfo mi in t.GetMembers() )
                {
                    Display(indent, "Member: {0}", mi.Name);
                    DisplayAttributes(indent, mi);

                    // If the member is a method, display information about its parameters.

                    if (mi.MemberType==MemberTypes.Method)
                    {
                        foreach ( ParameterInfo pi in ((MethodInfo) mi).GetParameters() )
                        {
                            Display(indent+1, "Parameter: Type={0}, Name={1}", pi.ParameterType, pi.Name);
                        }
                    }

                    // If the member is a property, display information about the property's accessor methods.
                    if (mi.MemberType==MemberTypes.Property)
                    {
                        foreach ( MethodInfo am in ((PropertyInfo) mi).GetAccessors() )
                        {
                            Display(indent+1, "Accessor method: {0}", am);
                        }
                    }
                }
                indent -= 1;
            }
            indent -= 1;
        }
    }

    // Displays the custom attributes applied to the specified member.
    public static void DisplayAttributes(Int32 indent, MemberInfo mi)
    {
        // Get the set of custom attributes; if none exist, just return.
        object[] attrs = mi.GetCustomAttributes(false);
        if (attrs.Length==0) {return;}

        // Display the custom attributes applied to this member.
        Display(indent+1, "Attributes:");
        foreach ( object o in attrs )
        {
            Display(indent+2, "{0}", o.ToString());
        }
    }

    // Display a formatted string indented by the specified amount.
    public static void Display(Int32 indent, string format, params object[] param)

    {
        Console.Write(new string(' ', indent*2));
        Console.WriteLine(format, param);
    }
}

//The output shown below is abbreviated.
//
//Assembly identity=ReflectionCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
//  Codebase=file:///C:/Documents and Settings/test/My Documents/Visual Studio 2005/Projects/Reflection/Reflection/obj/Debug/Reflection.exe
//Referenced assemblies:
//  Name=mscorlib, Version=2.0.0.0, Culture=, PublicKey token=B7-7A-5C-56-19-34-E0-89
//
//Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//
//  Type: System.Object
//    Member: GetType
//    Member: ToString
//    Member: Equals
//      Parameter: Type=System.Object, Name=obj
//    Member: Equals
//      Parameter: Type=System.Object, Name=objA
//      Parameter: Type=System.Object, Name=objB
//    Member: ReferenceEquals
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=System.Object, Name=objA
//      Parameter: Type=System.Object, Name=objB
//    Member: GetHashCode
//    Member: .ctor
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//
//  Type: System.ICloneable
//    Member: Clone
//
//  Type: System.Collections.IEnumerable
//    Member: GetEnumerator
//      Attributes:
//        System.Runtime.InteropServices.DispIdAttribute
//
//  Type: System.Collections.ICollection
//    Member: CopyTo
//      Parameter: Type=System.Array, Name=array
//      Parameter: Type=System.Int32, Name=index
//    Member: get_Count
//    Member: get_SyncRoot
//    Member: get_IsSynchronized
//    Member: Count
//      Accessor method: Int32 get_Count()
//    Member: SyncRoot
//      Accessor method: System.Object get_SyncRoot()
//    Member: IsSynchronized
//      Accessor method: Boolean get_IsSynchronized()
//
//  Type: System.Collections.IList
//    Member: get_Item
//      Parameter: Type=System.Int32, Name=index
//    Member: set_Item
//      Parameter: Type=System.Int32, Name=index
//      Parameter: Type=System.Object, Name=value
//    Member: Add
//      Parameter: Type=System.Object, Name=value
//    Member: Contains
//      Parameter: Type=System.Object, Name=value
//    Member: Clear
//    Member: get_IsReadOnly
//    Member: get_IsFixedSize
//    Member: IndexOf
//      Parameter: Type=System.Object, Name=value
//    Member: Insert
//      Parameter: Type=System.Int32, Name=index
//      Parameter: Type=System.Object, Name=value
//    Member: Remove
//      Parameter: Type=System.Object, Name=value
//    Member: RemoveAt
//      Parameter: Type=System.Int32, Name=index
//    Member: Item
//      Accessor method: System.Object get_Item(Int32)
//      Accessor method: Void set_Item(Int32, System.Object)
//    Member: IsReadOnly
//      Accessor method: Boolean get_IsReadOnly()
//    Member: IsFixedSize
//      Accessor method: Boolean get_IsFixedSize()
//
//  Type: System.Array
//    Member: IndexOf
//      Parameter: Type=T[], Name=array
//      Parameter: Type=T, Name=value
//    Member: AsReadOnly
//      Parameter: Type=T[], Name=array
//    Member: Resize
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=T[]&, Name=array
//      Parameter: Type=System.Int32, Name=newSize
//    Member: BinarySearch
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=T[], Name=array
//      Parameter: Type=T, Name=value
//    Member: BinarySearch
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=T[], Name=array
//      Parameter: Type=T, Name=value
//      Parameter: Type=System.Collections.Generic.IComparer`1[T], Name=comparer

Comentarios

El AssemblyName objeto contiene información sobre un ensamblado, que se puede usar para enlazar a ese ensamblado. La identidad de un ensamblado consta de lo siguiente:

  • Nombre simple.

  • Número de versión.

  • Par de claves criptográficas.

  • Referencia cultural admitida.

El nombre simple suele ser el nombre de archivo del archivo de manifiesto sin su extensión. El par de claves incluye una clave pública y privada, que se usa para crear firmas de nombre seguro para ensamblados.

Todos los compiladores que admiten Common Language Runtime emitirán el nombre simple de una clase anidada y la reflexión construirá un nombre mangled cuando se consulte, de acuerdo con las siguientes convenciones.

Delimitador Significado
Barra diagonal inversa (\) Carácter de escape.
Coma (,) Precede al nombre del ensamblado.
Signo más (+) Precede a una clase anidada.

Por ejemplo, el nombre completo de una clase podría tener este aspecto:

ContainingClass+NestedClass,MyAssembly

Un "++" se convierte en "\+\+" y "\" se convierte en "\\".

Este nombre completo se puede conservar y, posteriormente, se puede usar para cargar .Type Para buscar y cargar un Type, use GetType solo con el nombre de tipo o con el nombre de tipo completo del ensamblado. GetType con el nombre de tipo solo buscará en Type el ensamblado del autor de la llamada y, a continuación, en el ensamblado Del sistema. GetType con el nombre de tipo completo del ensamblado buscará Type en cualquier ensamblado.

Un elemento completamente especificado AssemblyName debe tener el nombre, la referencia cultural, la clave pública o el token de clave pública, la versión principal, la versión secundaria, el número de compilación y los parámetros de número de revisión. Los cuatro últimos se empaquetan en el Version tipo .

Para crear un nombre simple, cree un AssemblyName objeto mediante el constructor sin parámetros y establezca .Name Las demás propiedades son opcionales.

Para crear un nombre seguro completo, cree un AssemblyName objeto mediante el constructor sin parámetros y establezca y KeyPairName . Las demás propiedades son opcionales. Use SetPublicKey y SetPublicKeyToken para establecer la clave pública y el nombre seguro. La firma de nombre seguro siempre usa el SHA1 algoritmo hash.

Para asegurarse de que los nombres se construyen correctamente, use las siguientes propiedades:

También puede obtener el nombre mediante la opción con la /lGacutil.exe (Herramienta global de caché de ensamblados).

Para un nombre seguro especificado parcialmente, cree un AssemblyName objeto mediante el constructor sin parámetros y establezca el nombre y la clave pública. Un ensamblado creado con este AssemblyName tipo se puede firmar más adelante mediante assembly Linker (Al.exe).

Es posible especificar una clave pública y un objeto KeyPair con valores incoherentes. Esto puede ser útil en escenarios de desarrollador. En este caso, la clave pública recuperada con GetPublicKey especifica la clave pública correcta, mientras KeyPair que especifica las claves públicas y privadas usadas durante el desarrollo. Cuando el tiempo de ejecución detecta una discrepancia entre y KeyPair la clave pública, busca en el Registro la clave correcta que coincide con la clave pública.

El formato del nombre para mostrar de es AssemblyName una cadena Unicode delimitada por comas que comienza por el nombre, como se indica a continuación:

Name <,Culture = CultureInfo> <,Version = Major.Minor.Build.Revision> <, StrongName> <,PublicKeyToken> '\0'

Name es el nombre textual del ensamblado. CultureInfo es la referencia cultural definida por RFC1766 formato. Major, Minor, Buildy Revision son la versión principal, la versión secundaria, el número de compilación y el número de revisión del ensamblado. StrongName es el valor hash hexadecimal codificado en 64 bits del valor hash de la clave pública generada mediante el algoritmo hash SHA-1 y la clave pública especificada por SetPublicKey. PublicKeyToken es la clave pública con codificación hexadecimal especificada por SetPublicKey.

La codificación hexadecimal se define como la conversión de cada byte de un objeto binario a dos caracteres hexadecimales, progresando de un byte menos al más significativo. Se agregarán valores de visualización adicionales según sea necesario.

Si se conoce la clave pública completa, se puede sustituir PublicKey por StrongName.

Tenga en cuenta también que, a excepción Namede , que debe venir primero, el orden léxico de los parámetros no es importante. Sin embargo, cualquier parámetro (Version, Cultureo PublicKeyStrongName ) no establecido específicamente se considera omitido yAssemblyName, a continuación, se considera parcial. Al especificar información parcial, los parámetros Name deben especificarse en el orden descrito anteriormente.

Al proporcionar un nombre para mostrar, la convención StrongName =null o PublicKey= null indica que se requiere el enlace y la coincidencia con un ensamblado con nombre simple. Además, la convención Culture= "" (comilla doble que representa una cadena vacía) indica la coincidencia con la referencia cultural predeterminada.

En el ejemplo siguiente se muestra un AssemblyName para un ensamblado con nombre simple con referencia cultural predeterminada.

ExampleAssembly, Culture=""

En el ejemplo siguiente se muestra una referencia completa para un ensamblado con nombre seguro con la referencia cultural "en".

ExampleAssembly, Version=1.0.0.0, Culture=en, PublicKeyToken=a5d015c7d5a0b012

Constructores

AssemblyName()

Inicializa una nueva instancia de la clase AssemblyName.

AssemblyName(String)

Inicializa una nueva instancia de la clase AssemblyName con el nombre para mostrar especificado.

Propiedades

CodeBase
Obsoletos.

Indica o establece la ubicación del ensamblado como una dirección URL.

ContentType

Obtiene o establece un valor que indica el tipo del contenido del ensamblado.

CultureInfo

Indica o establece la referencia cultural que admite el ensamblado.

CultureName

Obtiene o establece el nombre de la referencia cultural asociada al ensamblado.

EscapedCodeBase
Obsoletos.

Obtiene el identificador URI, incluidos los caracteres de escape, que representa el código base.

Flags

Obtiene o establece los atributos del ensamblado.

FullName

Obtiene el nombre completo del ensamblado, que también se conoce como nombre para mostrar.

HashAlgorithm
Obsoletos.

Indica o establece el algoritmo hash que utiliza el manifiesto del ensamblado.

KeyPair
Obsoletos.

Obtiene o establece el par de claves criptográficas pública y privada que se utiliza para crear una firma de nombre seguro para el ensamblado.

Name

Obtiene o establece el nombre simple del ensamblado. Suele ser, aunque no necesariamente, el nombre del archivo de manifiesto del ensamblado, menos su extensión.

ProcessorArchitecture
Obsoletos.

Obtiene o establece un valor que identifica el procesador y los bits por palabra de la plataforma de destino de una aplicación ejecutable.

Version

Obtiene o establece los números de versión principal, secundaria, de compilación y de revisión del ensamblado.

VersionCompatibility
Obsoletos.

Obtiene o establece la información relacionada con la compatibilidad del ensamblado con otros ensamblados.

Métodos

Clone()

Realiza una copia de este objeto AssemblyName.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetAssemblyName(String)

Obtiene el nombre de ensamblado (AssemblyName) de un archivo dado.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetObjectData(SerializationInfo, StreamingContext)
Obsoletos.

Obtiene información de serialización con todos los datos necesarios para volver a crear una instancia de este AssemblyName.

GetPublicKey()

Obtiene la clave pública del ensamblado.

GetPublicKeyToken()

Obtiene el token de clave pública, formado por los 8 últimos bytes del hash SHA-1 de la clave pública con la que se firma la aplicación o el ensamblado.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnDeserialization(Object)

Implementa la interfaz ISerializable. El evento de deserialización vuelve a llamar a este método cuando se completa la deserialización.

ReferenceMatchesDefinition(AssemblyName, AssemblyName)

Devuelve un valor que indica si dos nombres de ensamblado son iguales. La comparación se basa en los nombres de ensamblado simples.

SetPublicKey(Byte[])

Establece la clave pública que identifica el ensamblado.

SetPublicKeyToken(Byte[])

Establece el token de clave pública, formado por los últimos 8 bytes del código hash SHA-1 de la clave pública con la que se firma la aplicación o el ensamblado.

ToString()

Devuelve el nombre completo del ensamblado, también conocido como nombre para mostrar.

Implementaciones de interfaz explícitas

_AssemblyName.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

_AssemblyName.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera la información de tipo de un objeto, que se puede usar después para obtener la información de tipo de una interfaz.

_AssemblyName.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

_AssemblyName.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

Se aplica a

Produto Versións
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Consulte también