Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

AppDomain.Load (Método) (Byte[])

Carga el Assembly con una imagen basada en el formato COFF (Common Object File Format) que contiene un Assembly emitido.

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

public Assembly Load(
	byte[] rawAssembly
)

Parámetros

rawAssembly
Tipo: System.Byte[]
Matriz de tipo byte que es una imagen basada en COFF que contiene un ensamblado emitido.

Valor devuelto

Tipo: System.Reflection.Assembly
Ensamblado cargado.

Implementaciones

_AppDomain.Load(Byte[])

ExcepciónCondición
ArgumentNullException

rawAssembly es null.

BadImageFormatException

rawAssembly no es un ensamblado válido.

O bien

Actualmente está cargada la versión 2.0 o posterior de Common Language Runtime y rawAssembly se ha compilado con una versión posterior.

AppDomainUnloadedException

Se ha intentado realizar la operación en un dominio de aplicación descargado.

FileLoadException

Se ha cargado un ensamblado o módulo dos veces con dos evidencias diferentes.

A partir de .NET Framework 4, el nivel de confianza de un ensamblado que se carga usando este método es igual que el nivel de confianza del dominio de aplicación.

Este método sólo debe utilizarse para cargar un ensamblado en el dominio de aplicación actual. Este método se proporciona por comodidad para los autores de llamadas de interoperabilidad que no pueden llamar al método Assembly.Load estático. Para cargar los ensamblados en otros dominios de aplicación, utilice un método tal como CreateInstanceAndUnwrap.

Para obtener información que es común a todas las sobrecargas de este método, vea la sobrecarga de método Load(AssemblyName).

En el siguiente ejemplo se muestra cómo cargar un ensamblado sin procesar.

Para que este código de ejemplo se ejecute, debe proporcionar el nombre completo del ensamblado. Para obtener información acerca de cómo obtener el nombre completo del ensamblado, vea Nombres de ensamblado.


using System;
using System.IO;
using System.Reflection;
using System.Reflection.Emit;

class Test {
   public static void Main() {
      AppDomain currentDomain = AppDomain.CurrentDomain;

      InstantiateMyType(currentDomain);   // Failed!

      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolver);

      InstantiateMyType(currentDomain);   // OK!
   }

   static void InstantiateMyType(AppDomain domain) {
      try {
	 // You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }

   // Loads the content of a file to a byte array. 
   static byte[] loadFile(string filename) {
      FileStream fs = new FileStream(filename, FileMode.Open);
      byte[] buffer = new byte[(int) fs.Length];
      fs.Read(buffer, 0, buffer.Length);
      fs.Close();

      return buffer;
   }   

   static Assembly MyResolver(object sender, ResolveEventArgs args) {
      AppDomain domain = (AppDomain) sender;

      // Once the files are generated, this call is
      // actually no longer necessary.
      EmitAssembly(domain);

      byte[] rawAssembly = loadFile("temp.dll");
      byte[] rawSymbolStore = loadFile("temp.pdb");
      Assembly assembly = domain.Load(rawAssembly, rawSymbolStore);

      return assembly;
   }

   // Creates a dynamic assembly with symbol information
   // and saves them to temp.dll and temp.pdb
   static void EmitAssembly(AppDomain domain) {
      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Save);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyModule", "temp.dll", true);
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Public);

      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();
      ilGenerator.EmitWriteLine("MyType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      assemblyBuilder.Save("temp.dll");
   }
}


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft