Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una vez que se carga un ensamblado en un dominio de aplicación, se puede ejecutar el código que contiene el ensamblado. La forma más sencilla de cargar un ensamblado es utilizar AssemblyLoad, que carga el ensamblado en el dominio de aplicación actual y comienza a ejecutar el código en el punto de entrada predeterminado del ensamblado.
Si desea cargar el ensamblado en otro dominio de la aplicación, utilice ExecuteAssembly o ExecuteAssemblyByName, o una de las otras versiones sobrecargadas de estos métodos.
Si desea ejecutar el otro ensamblado a partir de un punto de entrada distinto del predeterminado, defina un nuevo tipo derivado de MarshalByRefObject en el ensamblado remoto. A continuación, utilice CreateInstance para crear una instancia de ese tipo en la aplicación.
El código siguiente crea un ensamblado que consta de un solo espacio de nombres y dos clases. Pegue el código en una aplicación de consola de Visual Studio denominada HelloWorldRemote, compile o ejecute la solución y, a continuación, ciérrela. Busque el archivo HelloWorldRemote.exe en la carpeta obj\Debug del proyecto, y copie el archivo en la unidad C:.
' This module contains code to be called.
Module HelloWorldRemote
Class RemoteObject
Inherits System.MarshalByRefObject
Sub RemoteObject()
System.Console.WriteLine("Hello, World! (RemoteObject Constructor)")
End Sub
End Class
Sub Main()
System.Console.WriteLine("Hello, World! (Main method)")
End Sub
End Module
// This namespace contains code to be called.
namespace HelloWorldRemote
{
public class RemoteObject : System.MarshalByRefObject
{
public RemoteObject()
{
System.Console.WriteLine("Hello, World! (RemoteObject Constructor)");
}
}
class Program
{
static void Main()
{
System.Console.WriteLine("Hello, World! (Main method)");
}
}
}
Para tener acceso al código desde otra aplicación, puede cargar el ensamblado en el dominio de aplicación actual o crear un nuevo dominio de aplicación y cargarle el ensamblado.
Para cargar el ensamblado en el dominio de aplicación actual mediante Assembly.LoadFrom, puede usar Assembly.CreateInstance para crear una instancia de la clase RemoteObject. La creación de instancias hace que se ejecute el constructor de objetos.
' Load the assembly into the current appdomain:
Dim newAssembly As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom("c:\HelloWorldRemote.exe")
' Instantiate RemoteObject:
newAssembly.CreateInstance("HelloWorldRemote.RemoteObject")
// Load the assembly into the current appdomain:
System.Reflection.Assembly newAssembly = System.Reflection.Assembly.LoadFrom(@"c:\HelloWorldRemote.exe");
// Instantiate RemoteObject:
newAssembly.CreateInstance("HelloWorldRemote.RemoteObject");
Cuando cargue el ensamblado en un dominio de aplicación independiente, utilice AppDomain.ExecuteAssembly para tener acceso al punto de entrada predeterminado o AppDomain.CreateInstance para crear una instancia de la clase RemoteObject. La creación de la instancia hace que se ejecute el constructor.
Nota
Para obtener información sobre las desventajas de usar Assembly.LoadFrom, vea la sección Comentarios del método Assembly.LoadFrom(String).
Dim NewAppDomain As System.AppDomain = System.AppDomain.CreateDomain("NewApplicationDomain")
' Load the assembly and call the default entry point:
NewAppDomain.ExecuteAssembly("c:\HelloWorldRemote.exe")
' Create an instance of RemoteObject:
NewAppDomain.CreateInstanceFrom("c:\HelloWorldRemote.exe", "HelloWorldRemote.RemoteObject")
System.AppDomain NewAppDomain = System.AppDomain.CreateDomain("NewApplicationDomain");
// Load the assembly and call the default entry point:
NewAppDomain.ExecuteAssembly(@"c:\HelloWorldRemote.exe");
// Create an instance of RemoteObject:
NewAppDomain.CreateInstanceFrom(@"c:\HelloWorldRemote.exe", "HelloWorldRemote.RemoteObject");
Si no desea cargar el ensamblado mediante programación, utilice Agregar referencia en el Explorador de soluciones para especificar el ensamblado HelloWorldRemote.exe. En C#, agregue una directiva using HelloWorldRemote;; en Visual Basic, agregue una instrucción Imports HelloWorldRemote. A continuación, use el tipo RemoteObject en el programa para declarar una instancia del objeto RemoteObject, como se muestra en el ejemplo siguiente.
' This code creates an instance of RemoteObject,
' assuming HelloWorldRemote has been added as a reference:
Dim o As HelloWorldRemote.RemoteObject = New HelloWorldRemote.RemoteObject()
// This code creates an instance of RemoteObject,
// assuming HelloWorldRemote has been added as a reference:
HelloWorldRemote.RemoteObject o = new HelloWorldRemote.RemoteObject();
Vea también
Referencia
Dominios de aplicación (C# y Visual Basic)
Conceptos
Dominios de aplicación y ensamblados
Programar con dominios de aplicación