Compartir a través de


Cómo: Cargar ensamblados en un dominio de aplicación

Nota:

Este artículo es específico de .NET Framework. No se aplica a implementaciones más recientes de .NET, incluidas .NET 6 y versiones posteriores.

Hay varias maneras de cargar un ensamblado en un dominio de aplicación. La manera recomendada es usar el static método (Shared en Visual Basic) Load de la System.Reflection.Assembly clase . Otras formas en que los ensamblados se pueden cargar incluyen:

Nota:

El contexto de solo reflexión es nuevo en .NET Framework versión 2.0.

  • Los métodos como CreateInstance y CreateInstanceAndUnwrap de la AppDomain clase pueden cargar ensamblados en un dominio de aplicación.

  • El GetType método de la Type clase puede cargar ensamblados.

  • El Load método de la System.AppDomain clase puede cargar ensamblados, pero se usa principalmente para la interoperabilidad COM. No se debe usar para cargar ensamblados en un dominio de aplicación distinto del dominio de aplicación desde el que se llama.

Nota:

A partir de .NET Framework versión 2.0, el entorno de ejecución no cargará un ensamblado compilado con una versión de .NET Framework que tenga un número de versión superior al tiempo de ejecución cargado actualmente. Esto se aplica a la combinación de los componentes principales y secundarios del número de versión.

Puede especificar la forma en que el código compilado Just-In-Time (JIT) de los ensamblados cargados se comparte entre dominios de aplicación. Para obtener más información, consulte Dominios de aplicación y ensamblados.

Example

El código siguiente carga un ensamblado denominado "example.exe" o "example.dll" en el dominio de aplicación actual, obtiene un tipo denominado Example del ensamblado, obtiene un método sin parámetros denominado MethodA para ese tipo y ejecuta el método . Para obtener una explicación completa sobre cómo obtener información de un ensamblado cargado, consulte Carga dinámica y uso de tipos.

using namespace System;
using namespace System::Reflection;

public ref class Asmload0
{
public:
    static void Main()
    {
        // Use the file name to load the assembly into the current
        // application domain.
        Assembly^ a = Assembly::Load("example");
        // Get the type to use.
        Type^ myType = a->GetType("Example");
        // Get the method to call.
        MethodInfo^ myMethod = myType->GetMethod("MethodA");
        // Create an instance.
        Object^ obj = Activator::CreateInstance(myType);
        // Execute the method.
        myMethod->Invoke(obj, nullptr);
    }
};

int main()
{
    Asmload0::Main();
}
using System;
using System.Reflection;

public class Asmload0
{
    public static void Main()
    {
        // Use the file name to load the assembly into the current
        // application domain.
        Assembly a = Assembly.Load("example");
        // Get the type to use.
        Type myType = a.GetType("Example");
        // Get the method to call.
        MethodInfo myMethod = myType.GetMethod("MethodA");
        // Create an instance.
        object obj = Activator.CreateInstance(myType);
        // Execute the method.
        myMethod.Invoke(obj, null);
    }
}
Imports System.Reflection

Public Class Asmload0
    Public Shared Sub Main()
        ' Use the file name to load the assembly into the current
        ' application domain.
        Dim a As Assembly = Assembly.Load("example")
        ' Get the type to use.
        Dim myType As Type = a.GetType("Example")
        ' Get the method to call.
        Dim myMethod As MethodInfo = myType.GetMethod("MethodA")
        ' Create an instance.
        Dim obj As Object = Activator.CreateInstance(myType)
        ' Execute the method.
        myMethod.Invoke(obj, Nothing)
    End Sub
End Class

Consulte también