Esta documentación está archivada y no tiene mantenimiento.

Assembly (Clase)

Actualización: noviembre 2007

Representa un ensamblado, que es un bloque de creación reutilizable, versionable y autodescriptivo de una aplicación de Common Language Runtime.

Espacio de nombres:  System.Reflection
Ensamblado:  mscorlib (en mscorlib.dll)

[SerializableAttribute]
[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComVisibleAttribute(true)]
public class Assembly : _Assembly, IEvidenceFactory, 
	ICustomAttributeProvider, ISerializable
/** @attribute SerializableAttribute */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */
/** @attribute ComVisibleAttribute(true) */
public class Assembly implements _Assembly, 
	IEvidenceFactory, ICustomAttributeProvider, ISerializable
public class Assembly implements _Assembly, IEvidenceFactory, ICustomAttributeProvider, ISerializable

Utilice la clase Assembly para cargar los ensamblados, explorar los metadatos y las partes constituyentes de los ensamblados, detectar los tipos incluidos en los ensamblados y crear instancias de esos tipos.

Para obtener una matriz de objetos Assembly que represente los ensamblados que actualmente están cargados en un dominio de aplicación (por ejemplo, el dominio de aplicación predeterminado de un proyecto simple), utilice el método AppDomain.GetAssemblies.

Para cargar ensamblados dinámicamente, la clase Assembly proporciona los métodos estáticos siguientes (métodos Shared en Visual Basic). Los ensamblados se cargan en el dominio de aplicación en que se produce la operación de carga.

  • Se recomienda cargar los ensamblados utilizando el método Load, que identifica el ensamblado que se va a cargar mediante su nombre para mostrar (por ejemplo, "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"). La búsqueda del ensamblado se rige por las normas descritas en Cómo el motor en tiempo de ejecución ubica ensamblados.

  • Los métodos ReflectionOnlyLoad y ReflectionOnlyLoadFrom permiten cargar un ensamblado para su reflexión, pero no para su ejecución. Por ejemplo, un ensamblado que tiene como destino una plataforma de 64 bits puede ser examinado por el código que se ejecuta en una plataforma de 32 bits.

  • Los métodos LoadFile y LoadFrom se proporcionan para aquellas situaciones poco habituales en que un ensamblado debe identificarse mediante una ruta de acceso.

Si desea obtener un objeto Assembly para el ensamblado que se encuentra actualmente en ejecución, utilice el método GetExecutingAssembly.

Muchos miembros de la clase Assembly proporcionan información sobre un ensamblado. Por ejemplo:

  • El método GetName devuelve un objeto AssemblyName que proporciona acceso a las partes del nombre para mostrar del ensamblado.

  • El método GetCustomAttributes muestra los atributos que se aplican al ensamblado.

  • El método GetFiles proporciona acceso a los archivos del manifiesto del ensamblado.

  • El método GetManifestResourceNames proporciona los nombres de los recursos del manifiesto del ensamblado.

El método GetTypes muestra todos los tipos del ensamblado. El método GetExportedTypes indica los tipos que los llamadores pueden ver desde fuera del ensamblado. El método GetType se puede utilizar para buscar un tipo determinado en el ensamblado. El método CreateInstance se puede utilizar para buscar y crear instancias de tipos en el ensamblado.

Para obtener más información sobre los ensamblados, vea Dominios de aplicación y ensamblados.

En el ejemplo de código siguiente se muestra cómo se obtiene el ensamblado que se está ejecutando en la actualidad, cómo se crea una instancia de un tipo incluido en este ensamblado y cómo se llama a uno de los métodos del tipo con enlace en tiempo de ejecución. Para este fin, en el ejemplo de código se define una clase denominada Example con un método denominado SampleMethod. El constructor de la clase acepta un entero, que se utiliza para calcular el valor devuelto del método.

En el ejemplo de código también se muestra cómo se utiliza el método GetName para obtener un objeto AssemblyName que se puede utilizar para analizar el nombre completo del ensamblado. En el ejemplo se muestra el número de versión del ensamblado, la propiedad CodeBase y la propiedad EntryPoint.

using System;
using System.Reflection;
using System.Security.Permissions;

[assembly:AssemblyVersionAttribute("1.0.2000.0")]

public class Example
{
    private int factor;
    public Example(int f)
    {
        factor = f;
    }

    public int SampleMethod(int x) 
    { 
        Console.WriteLine("\nExample.SampleMethod({0}) executes.", x);
        return x * factor;
    }

    public static void Main()
    {
        Assembly assem = Assembly.GetExecutingAssembly();

        Console.WriteLine("Assembly Full Name:");
        Console.WriteLine(assem.FullName);

        // The AssemblyName type can be used to parse the full name.
        AssemblyName assemName = assem.GetName();
        Console.WriteLine("\nName: {0}", assemName.Name);
        Console.WriteLine("Version: {0}.{1}", 
            assemName.Version.Major, assemName.Version.Minor);

        Console.WriteLine("\nAssembly CodeBase:");
        Console.WriteLine(assem.CodeBase);

        // Create an object from the assembly, passing in the correct number
        // and type of arguments for the constructor.
        Object o = assem.CreateInstance("Example", false, 
            BindingFlags.ExactBinding, 
            null, new Object[] { 2 }, null, null);

        // Make a late-bound call to an instance method of the object.    
        MethodInfo m = assem.GetType("Example").GetMethod("SampleMethod");
        Object ret = m.Invoke(o, new Object[] { 42 });
        Console.WriteLine("SampleMethod returned {0}.", ret);

        Console.WriteLine("\nAssembly entry point:");
        Console.WriteLine(assem.EntryPoint);
    }
}

/* This code example produces output similar to the following:

Assembly Full Name:
source, Version=1.0.2000.0, Culture=neutral, PublicKeyToken=null

Name: source
Version: 1.0

Assembly CodeBase:
file:///C:/sdtree/AssemblyClass/cs/source.exe

Example.SampleMethod(42) executes.
SampleMethod returned 84.

Assembly entry point:
Void Main()
 */


Este tipo es seguro para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0

XNA Framework

Compatible con: 2.0, 1.0
Mostrar: