AppDomain.Load AppDomain.Load AppDomain.Load AppDomain.Load Method

Definição

Carrega um Assembly para esse domínio de aplicativo.Loads an Assembly into this application domain.

Sobrecargas

Load(Byte[]) Load(Byte[]) Load(Byte[]) Load(Byte[])

Carrega o Assembly com uma imagem baseada em formato COFF, contendo um Assembly emitido.Loads the Assembly with a common object file format (COFF) based image containing an emitted Assembly.

Load(AssemblyName) Load(AssemblyName) Load(AssemblyName) Load(AssemblyName)

Carrega um Assembly dado seu AssemblyName.Loads an Assembly given its AssemblyName.

Load(String) Load(String) Load(String) Load(String)

Carrega um Assembly de acordo com seu nome de exibição.Loads an Assembly given its display name.

Load(Byte[], Byte[]) Load(Byte[], Byte[]) Load(Byte[], Byte[]) Load(Byte[], Byte[])

Carrega o Assembly com uma imagem baseada em formato COFF, contendo um Assembly emitido.Loads the Assembly with a common object file format (COFF) based image containing an emitted Assembly. Os bytes brutos que representam os símbolos para o Assembly também são carregados.The raw bytes representing the symbols for the Assembly are also loaded.

Load(AssemblyName, Evidence) Load(AssemblyName, Evidence) Load(AssemblyName, Evidence) Load(AssemblyName, Evidence)

Carrega um Assembly dado seu AssemblyName.Loads an Assembly given its AssemblyName.

Load(String, Evidence) Load(String, Evidence) Load(String, Evidence) Load(String, Evidence)

Carrega um Assembly de acordo com seu nome de exibição.Loads an Assembly given its display name.

Load(Byte[], Byte[], Evidence) Load(Byte[], Byte[], Evidence) Load(Byte[], Byte[], Evidence) Load(Byte[], Byte[], Evidence)

Carrega o Assembly com uma imagem baseada em formato COFF, contendo um Assembly emitido.Loads the Assembly with a common object file format (COFF) based image containing an emitted Assembly. Os bytes brutos que representam os símbolos para o Assembly também são carregados.The raw bytes representing the symbols for the Assembly are also loaded.

Load(Byte[]) Load(Byte[]) Load(Byte[]) Load(Byte[])

Carrega o Assembly com uma imagem baseada em formato COFF, contendo um Assembly emitido.Loads the Assembly with a common object file format (COFF) based image containing an emitted Assembly.

public:
 virtual System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly);
public System.Reflection.Assembly Load (byte[] rawAssembly);
abstract member Load : byte[] -> System.Reflection.Assembly
override this.Load : byte[] -> System.Reflection.Assembly
Public Function Load (rawAssembly As Byte()) As Assembly

Parâmetros

rawAssembly
Byte[]

Uma matriz do tipo byte que é uma imagem baseada em COFF contendo um assembly emitido.An array of type byte that is a COFF-based image containing an emitted assembly.

Retornos

O assembly carregado.The loaded assembly.

Implementações

Exceções

rawAssembly não é um assembly válido.rawAssembly is not a valid assembly.

- ou --or- A versão 2,0 ou posterior do Common Language Runtime está carregada e rawAssembly foi compilada com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded and rawAssembly was compiled with a later version.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

Exemplos

O exemplo a seguir demonstra o uso do carregamento de um assembly bruto.The following sample demonstrates the use of loading a raw assembly.

Para este exemplo de código ser executado, você deve fornecer o nome de assembly totalmente qualificado.For this code example to run, you must provide the fully qualified assembly name. Para obter informações sobre como obter o nome totalmente qualificado do assembly, consulte nomes de assembly.For information about how to obtain the fully qualified assembly name, see Assembly Names.

using namespace System;
using namespace System::IO;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
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.
array<Byte>^ loadFile( String^ filename )
{
   FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
   array<Byte>^buffer = gcnew array<Byte>((int)fs->Length);
   fs->Read( buffer, 0, buffer->Length );
   fs->Close();
   return buffer;
}


// Creates a dynamic assembly with symbol information
// and saves them to temp.dll and temp.pdb
void EmitAssembly( AppDomain^ domain )
{
   AssemblyName^ assemblyName = gcnew 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, nullptr );
   ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
   ilGenerator->EmitWriteLine( "MyType instantiated!" );
   ilGenerator->Emit( OpCodes::Ret );
   typeBuilder->CreateType();
   assemblyBuilder->Save( "temp.dll" );
}

ref class Resolver
{
public:
   static Assembly^ MyResolver( Object^ sender, ResolveEventArgs^ args )
   {
      AppDomain^ domain = dynamic_cast<AppDomain^>(sender);
      
      // Once the files are generated, this call is
      // actually no longer necessary.
      EmitAssembly( domain );
      array<Byte>^rawAssembly = loadFile( "temp.dll" );
      array<Byte>^rawSymbolStore = loadFile( "temp.pdb" );
      Assembly^ assembly = domain->Load( rawAssembly, rawSymbolStore );
      return assembly;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   InstantiateMyType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Resolver::MyResolver );
   InstantiateMyType( currentDomain ); // OK!
}

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");
   }
}
Imports System
Imports System.IO
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyType(currentDomain)      ' Failed!

      AddHandler currentDomain.AssemblyResolve, AddressOf MyResolver
      
      InstantiateMyType(currentDomain)      ' OK!
   End Sub 'Main
   
   
   Sub InstantiateMyType(domain As AppDomain)
      Try
	 ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyType
   
   
   ' Loads the content of a file to a byte array. 
   Function loadFile(filename As String) As Byte()
      Dim fs As New FileStream(filename, FileMode.Open)
      Dim buffer(CInt(fs.Length)) As Byte
      fs.Read(buffer, 0, buffer.Length)
      fs.Close()
      
      Return buffer
   End Function 'loadFile
   
   
   Function MyResolver(sender As Object, args As ResolveEventArgs) As System.Reflection.Assembly
      Dim domain As AppDomain = DirectCast(sender, AppDomain)
      
      ' Once the files are generated, this call is
      ' actually no longer necessary.
      EmitAssembly(domain)
      
      Dim rawAssembly As Byte() = loadFile("temp.dll")
      Dim rawSymbolStore As Byte() = loadFile("temp.pdb")
      Dim myAssembly As System.Reflection.Assembly = domain.Load(rawAssembly, rawSymbolStore)
      
      Return myAssembly
   End Function 'MyResolver
   
   
   ' Creates a dynamic assembly with symbol information
   ' and saves them to temp.dll and temp.pdb
   Sub EmitAssembly(domain As AppDomain)
      Dim assemblyName As New AssemblyName()
      assemblyName.Name = "MyAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Save)
      Dim moduleBuilder As ModuleBuilder = assemblyBuilder.DefineDynamicModule("MyModule", "temp.dll", True)
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Public)
      
      Dim constructorBuilder As ConstructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      ilGenerator.EmitWriteLine("MyType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      assemblyBuilder.Save("temp.dll")
   End Sub 'EmitAssembly

End Module 'Test

Comentários

Começando com o .NET Framework 4.NET Framework 4, o nível de confiança de um assembly que é carregado usando esse método é o mesmo que o nível de confiança do domínio do aplicativo.Beginning with the .NET Framework 4.NET Framework 4, the trust level of an assembly that is loaded by using this method is the same as the trust level of the application domain.

Este método só deve ser usado para carregar um assembly no domínio de aplicativo atual.This method should be used only to load an assembly into the current application domain. Este método é fornecido como uma praticidade para chamadores de interoperabilidade que não possam chamar o método estático Assembly.Load.This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. Para carregar assemblies em outros domínios de aplicativo, use um método como CreateInstanceAndUnwrap.To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

Para informações comuns a todas as sobrecargas desse método, consulte a sobrecarga do método Load(AssemblyName).For information that is common to all overloads of this method, see the Load(AssemblyName) method overload.

Segurança

FileIOPermission
para acesso de leitura de um arquivo ou um diretório, e para acesso às informações no próprio caminho.for access to read from a file or directory, and for access to the information in the path itself. Enumerações associadas: Read, PathDiscovery.Associated enumerations: Read, PathDiscovery.

Load(AssemblyName) Load(AssemblyName) Load(AssemblyName) Load(AssemblyName)

Carrega um Assembly dado seu AssemblyName.Loads an Assembly given its AssemblyName.

public:
 virtual System::Reflection::Assembly ^ Load(System::Reflection::AssemblyName ^ assemblyRef);
public System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyRef);
abstract member Load : System.Reflection.AssemblyName -> System.Reflection.Assembly
override this.Load : System.Reflection.AssemblyName -> System.Reflection.Assembly
Public Function Load (assemblyRef As AssemblyName) As Assembly

Parâmetros

assemblyRef
AssemblyName AssemblyName AssemblyName AssemblyName

O objeto que descreve o assembly a ser carregado.An object that describes the assembly to load.

Retornos

O assembly carregado.The loaded assembly.

Implementações

Exceções

assemblyRef não foi encontrado.assemblyRef is not found.

assemblyRef não é um assembly válido.assemblyRef is not a valid assembly.

- ou --or- A versão 2,0 ou posterior do Common Language Runtime está carregada e assemblyRef foi compilada com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded and assemblyRef was compiled with a later version.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

Comentários

Este método só deve ser usado para carregar um assembly no domínio de aplicativo atual.This method should be used only to load an assembly into the current application domain. Este método é fornecido como uma praticidade para chamadores de interoperabilidade que não possam chamar o método estático Assembly.Load.This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. Para carregar assemblies em outros domínios de aplicativo, use um método como CreateInstanceAndUnwrap.To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

Se uma versão do assembly solicitado já estiver carregada, esse método retornará o assembly carregado, mesmo se uma versão diferente for solicitada.If a version of the requested assembly is already loaded, this method returns the loaded assembly, even if a different version is requested.

O fornecimento de um nome de assembly assemblyRef parcial para o não é recomendado.Supplying a partial assembly name for assemblyRef is not recommended. (Um nome parcial omite um ou mais de cultura, versão ou token de chave pública.(A partial name omits one or more of culture, version, or public key token. Para sobrecargas que usam uma cadeia de caracteres em AssemblyName vez de um objeto, "MyAssembly, Version = 1.0.0.0" é um exemplo de um nome parcial e "MyAssembly, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 18ab3442da84b47" é um exemplo de um nome completo.) O uso de nomes parciais tem um efeito negativo no desempenho.For overloads that take a string instead of an AssemblyName object, "MyAssembly, Version=1.0.0.0" is an example of a partial name and "MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=18ab3442da84b47" is an example of a full name.) Using partial names has a negative effect on performance. Além disso, um nome de assembly parcial pode carregar um assembly do cache de assembly global somente se houver uma cópia exata do assembly no diretório base do aplicativo (BaseDirectory ou AppDomainSetup.ApplicationBase).In addition, a partial assembly name can load an assembly from the global assembly cache only if there is an exact copy of the assembly in the application base directory (BaseDirectory or AppDomainSetup.ApplicationBase).

Se o objeto AppDomain atual representar o domínio Ado aplicativo e Load o método for chamado do domínio Bdo aplicativo, o assembly será carregado em ambos os domínios do aplicativo.If the current AppDomain object represents application domain A, and the Load method is called from application domain B, the assembly is loaded into both application domains. Por exemplo, o código a seguir MyAssembly é carregado no novo domínio ChildDomain do aplicativo e também no domínio do aplicativo em que o código é executado:For example, the following code loads MyAssembly into the new application domain ChildDomain and also into the application domain where the code executes:

AppDomain^ ad = AppDomain::CreateDomain("ChildDomain");
ad->Load("MyAssembly");
AppDomain ad = AppDomain.CreateDomain("ChildDomain");
ad.Load("MyAssembly");
Dim ad As AppDomain  = AppDomain.CreateDomain("ChildDomain")
ad.Load("MyAssembly")

O assembly é carregado em ambos os domínios Assembly porque não deriva de MarshalByRefObjecte, portanto, Load o valor de retorno do método não pode ser empacotado.The assembly is loaded into both domains because Assembly does not derive from MarshalByRefObject, and therefore the return value of the Load method cannot be marshaled. Em vez disso, a Common Language Runtime tenta carregar o assembly no domínio do aplicativo de chamada.Instead, the common language runtime tries to load the assembly into the calling application domain. Os assemblies que são carregados nos dois domínios de aplicativo podem ser diferentes se as configurações de caminho para os dois domínios de aplicativo forem diferentes.The assemblies that are loaded into the two application domains might be different if the path settings for the two application domains are different.

Observação

Se a AssemblyName.Name Propriedade e a AssemblyName.CodeBase Propriedade forem definidas, a primeira tentativa de carregar o assembly usará o nome de exibição (incluindo a versão, a cultura e assim por diante Assembly.FullName , conforme retornado pela propriedade).If both the AssemblyName.Name property and the AssemblyName.CodeBase property are set, the first attempt to load the assembly uses the display name (including version, culture, and so on, as returned by the Assembly.FullName property). Se o arquivo não for encontrado, a CodeBase propriedade será usada para pesquisar o assembly.If the file is not found, the CodeBase property is used to search for the assembly. Se o assembly for encontrado usando CodeBase, o nome de exibição será correspondido em relação ao assembly.If the assembly is found using CodeBase, the display name is matched against the assembly. Se a correspondência falhar, um FileLoadException será lançado.If the match fails, a FileLoadException is thrown.

Segurança

FileIOPermission
para acesso de leitura de um arquivo ou um diretório, e para acesso às informações no próprio caminho.for access to read from a file or directory, and for access to the information in the path itself. Enumerações associadas: Read, PathDiscovery.Associated enumerations: Read, PathDiscovery.

Load(String) Load(String) Load(String) Load(String)

Carrega um Assembly de acordo com seu nome de exibição.Loads an Assembly given its display name.

public:
 virtual System::Reflection::Assembly ^ Load(System::String ^ assemblyString);
public System.Reflection.Assembly Load (string assemblyString);
abstract member Load : string -> System.Reflection.Assembly
override this.Load : string -> System.Reflection.Assembly
Public Function Load (assemblyString As String) As Assembly

Parâmetros

assemblyString
String String String String

O nome para exibição do assembly.The display name of the assembly. Consulte FullName.See FullName.

Retornos

O assembly carregado.The loaded assembly.

Implementações

Exceções

assemblyString não foi encontrado.assemblyString is not found.

assemblyString não é um assembly válido.assemblyString is not a valid assembly.

- ou --or- A versão 2,0 ou posterior do Common Language Runtime está carregada e assemblyString foi compilada com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded and assemblyString was compiled with a later version.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

Comentários

Este método só deve ser usado para carregar um assembly no domínio de aplicativo atual.This method should be used only to load an assembly into the current application domain. Este método é fornecido como uma praticidade para chamadores de interoperabilidade que não possam chamar o método estático Assembly.Load.This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. Para carregar assemblies em outros domínios de aplicativo, use um método como CreateInstanceAndUnwrap.To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

Para informações comuns a todas as sobrecargas desse método, consulte a sobrecarga do método Load(AssemblyName).For information that is common to all overloads of this method, see the Load(AssemblyName) method overload.

Segurança

FileIOPermission
para acesso de leitura de um arquivo ou um diretório, e para acesso às informações no próprio caminho.for access to read from a file or directory, and for access to the information in the path itself. Enumerações associadas: Read, PathDiscovery.Associated enumerations: Read, PathDiscovery.

WebPermission
para a capacidade de acessar o local do conjunto caso o assembly não seja local.for the ability to access the location of the assembly if the assembly is not local.

Load(Byte[], Byte[]) Load(Byte[], Byte[]) Load(Byte[], Byte[]) Load(Byte[], Byte[])

Carrega o Assembly com uma imagem baseada em formato COFF, contendo um Assembly emitido.Loads the Assembly with a common object file format (COFF) based image containing an emitted Assembly. Os bytes brutos que representam os símbolos para o Assembly também são carregados.The raw bytes representing the symbols for the Assembly are also loaded.

public:
 virtual System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly, cli::array <System::Byte> ^ rawSymbolStore);
public System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore);
abstract member Load : byte[] * byte[] -> System.Reflection.Assembly
override this.Load : byte[] * byte[] -> System.Reflection.Assembly
Public Function Load (rawAssembly As Byte(), rawSymbolStore As Byte()) As Assembly

Parâmetros

rawAssembly
Byte[]

Uma matriz do tipo byte que é uma imagem baseada em COFF contendo um assembly emitido.An array of type byte that is a COFF-based image containing an emitted assembly.

rawSymbolStore
Byte[]

Uma matriz do tipo byte contendo os bytes brutos que representam os símbolos para o assembly.An array of type byte containing the raw bytes representing the symbols for the assembly.

Retornos

O assembly carregado.The loaded assembly.

Implementações

Exceções

rawAssembly não é um assembly válido.rawAssembly is not a valid assembly.

- ou --or- A versão 2,0 ou posterior do Common Language Runtime está carregada e rawAssembly foi compilada com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded and rawAssembly was compiled with a later version.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

Exemplos

O exemplo a seguir demonstra o uso do carregamento de um assembly bruto.The following sample demonstrates the use of loading a raw assembly.

Para este exemplo de código ser executado, você deve fornecer o nome de assembly totalmente qualificado.For this code example to run, you must provide the fully qualified assembly name. Para obter informações sobre como obter o nome totalmente qualificado do assembly, consulte nomes de assembly.For information about how to obtain the fully qualified assembly name, see Assembly Names.

using namespace System;
using namespace System::IO;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
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.
array<Byte>^ loadFile( String^ filename )
{
   FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
   array<Byte>^buffer = gcnew array<Byte>((int)fs->Length);
   fs->Read( buffer, 0, buffer->Length );
   fs->Close();
   return buffer;
}


// Creates a dynamic assembly with symbol information
// and saves them to temp.dll and temp.pdb
void EmitAssembly( AppDomain^ domain )
{
   AssemblyName^ assemblyName = gcnew 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, nullptr );
   ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
   ilGenerator->EmitWriteLine( "MyType instantiated!" );
   ilGenerator->Emit( OpCodes::Ret );
   typeBuilder->CreateType();
   assemblyBuilder->Save( "temp.dll" );
}

ref class Resolver
{
public:
   static Assembly^ MyResolver( Object^ sender, ResolveEventArgs^ args )
   {
      AppDomain^ domain = dynamic_cast<AppDomain^>(sender);
      
      // Once the files are generated, this call is
      // actually no longer necessary.
      EmitAssembly( domain );
      array<Byte>^rawAssembly = loadFile( "temp.dll" );
      array<Byte>^rawSymbolStore = loadFile( "temp.pdb" );
      Assembly^ assembly = domain->Load( rawAssembly, rawSymbolStore );
      return assembly;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   InstantiateMyType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Resolver::MyResolver );
   InstantiateMyType( currentDomain ); // OK!
}

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");
   }
}
Imports System
Imports System.IO
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyType(currentDomain)      ' Failed!

      AddHandler currentDomain.AssemblyResolve, AddressOf MyResolver
      
      InstantiateMyType(currentDomain)      ' OK!
   End Sub 'Main
   
   
   Sub InstantiateMyType(domain As AppDomain)
      Try
	 ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyType
   
   
   ' Loads the content of a file to a byte array. 
   Function loadFile(filename As String) As Byte()
      Dim fs As New FileStream(filename, FileMode.Open)
      Dim buffer(CInt(fs.Length)) As Byte
      fs.Read(buffer, 0, buffer.Length)
      fs.Close()
      
      Return buffer
   End Function 'loadFile
   
   
   Function MyResolver(sender As Object, args As ResolveEventArgs) As System.Reflection.Assembly
      Dim domain As AppDomain = DirectCast(sender, AppDomain)
      
      ' Once the files are generated, this call is
      ' actually no longer necessary.
      EmitAssembly(domain)
      
      Dim rawAssembly As Byte() = loadFile("temp.dll")
      Dim rawSymbolStore As Byte() = loadFile("temp.pdb")
      Dim myAssembly As System.Reflection.Assembly = domain.Load(rawAssembly, rawSymbolStore)
      
      Return myAssembly
   End Function 'MyResolver
   
   
   ' Creates a dynamic assembly with symbol information
   ' and saves them to temp.dll and temp.pdb
   Sub EmitAssembly(domain As AppDomain)
      Dim assemblyName As New AssemblyName()
      assemblyName.Name = "MyAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Save)
      Dim moduleBuilder As ModuleBuilder = assemblyBuilder.DefineDynamicModule("MyModule", "temp.dll", True)
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Public)
      
      Dim constructorBuilder As ConstructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      ilGenerator.EmitWriteLine("MyType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      assemblyBuilder.Save("temp.dll")
   End Sub 'EmitAssembly

End Module 'Test

Comentários

Começando com o .NET Framework 4.NET Framework 4, o nível de confiança de um assembly que é carregado usando esse método é o mesmo que o nível de confiança do domínio do aplicativo.Beginning with the .NET Framework 4.NET Framework 4, the trust level of an assembly that is loaded by using this method is the same as the trust level of the application domain.

Este método só deve ser usado para carregar um assembly no domínio de aplicativo atual.This method should be used only to load an assembly into the current application domain. Este método é fornecido como uma praticidade para chamadores de interoperabilidade que não possam chamar o método estático Assembly.Load.This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. Para carregar assemblies em outros domínios de aplicativo, use um método como CreateInstanceAndUnwrap.To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

Para informações comuns a todas as sobrecargas desse método, consulte a sobrecarga do método Load(AssemblyName).For information that is common to all overloads of this method, see the Load(AssemblyName) method overload.

Segurança

WebPermission
para ler um URI que não começa com "file://".for reading a URI that does not begin with "file://".

FileIOPermission
para acesso de leitura de um arquivo ou um diretório, e para acesso às informações no próprio caminho.for access to read from a file or directory, and for access to the information in the path itself. Enumerações associadas: Read, PathDiscovery.Associated enumerations: Read, PathDiscovery.

Load(AssemblyName, Evidence) Load(AssemblyName, Evidence) Load(AssemblyName, Evidence) Load(AssemblyName, Evidence)

Aviso

Esta API agora é obsoleta.

Carrega um Assembly dado seu AssemblyName.Loads an Assembly given its AssemblyName.

public:
 virtual System::Reflection::Assembly ^ Load(System::Reflection::AssemblyName ^ assemblyRef, System::Security::Policy::Evidence ^ assemblySecurity);
[System.Obsolete("Use an overload that does not take an Evidence parameter")]
[System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity);
abstract member Load : System.Reflection.AssemblyName * System.Security.Policy.Evidence -> System.Reflection.Assembly
override this.Load : System.Reflection.AssemblyName * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Function Load (assemblyRef As AssemblyName, assemblySecurity As Evidence) As Assembly

Parâmetros

assemblyRef
AssemblyName AssemblyName AssemblyName AssemblyName

O objeto que descreve o assembly a ser carregado.An object that describes the assembly to load.

assemblySecurity
Evidence Evidence Evidence Evidence

Evidência para carregar o assembly.Evidence for loading the assembly.

Retornos

O assembly carregado.The loaded assembly.

Implementações

Exceções

assemblyRef não foi encontrado.assemblyRef is not found.

assemblyRef não é um assembly válido.assemblyRef is not a valid assembly.

- ou --or- A versão 2,0 ou posterior do Common Language Runtime está carregada e assemblyRef foi compilada com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded and assemblyRef was compiled with a later version.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

Comentários

Este método só deve ser usado para carregar um assembly no domínio de aplicativo atual.This method should be used only to load an assembly into the current application domain. Este método é fornecido como uma praticidade para chamadores de interoperabilidade que não possam chamar o método estático Assembly.Load.This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. Para carregar assemblies em outros domínios de aplicativo, use um método como CreateInstanceAndUnwrap.To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

Para informações comuns a todas as sobrecargas desse método, consulte a sobrecarga do método Load(AssemblyName).For information that is common to all overloads of this method, see the Load(AssemblyName) method overload.

Segurança

FileIOPermission
para acesso de leitura de um arquivo ou um diretório, e para acesso às informações no próprio caminho.for access to read from a file or directory, and for access to the information in the path itself. Enumerações associadas: Read, PathDiscovery.Associated enumerations: Read, PathDiscovery.

SecurityPermission
para carregar um assembly com evidências.to load an assembly with evidence. Enumeração associada: ControlEvidence.Associated enumeration: ControlEvidence.

WebPermission
para ler um caminho que não está no formato "file://" ou "\\\UNC\dir\\" ou "c:\\".for reading a path that is not in the form "file://" or "\\\UNC\dir\\" or "c:\\".

Load(String, Evidence) Load(String, Evidence) Load(String, Evidence) Load(String, Evidence)

Aviso

Esta API agora é obsoleta.

Carrega um Assembly de acordo com seu nome de exibição.Loads an Assembly given its display name.

public:
 virtual System::Reflection::Assembly ^ Load(System::String ^ assemblyString, System::Security::Policy::Evidence ^ assemblySecurity);
[System.Obsolete("Use an overload that does not take an Evidence parameter")]
[System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Assembly Load (string assemblyString, System.Security.Policy.Evidence assemblySecurity);
abstract member Load : string * System.Security.Policy.Evidence -> System.Reflection.Assembly
override this.Load : string * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Function Load (assemblyString As String, assemblySecurity As Evidence) As Assembly

Parâmetros

assemblyString
String String String String

O nome para exibição do assembly.The display name of the assembly. Consulte FullName.See FullName.

assemblySecurity
Evidence Evidence Evidence Evidence

Evidência para carregar o assembly.Evidence for loading the assembly.

Retornos

O assembly carregado.The loaded assembly.

Implementações

Exceções

assemblyString não foi encontrado.assemblyString is not found.

assemblyString não é um assembly válido.assemblyString is not a valid assembly.

- ou --or- A versão 2,0 ou posterior do Common Language Runtime está carregada e assemblyString foi compilada com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded and assemblyString was compiled with a later version.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

Comentários

Este método só deve ser usado para carregar um assembly no domínio de aplicativo atual.This method should be used only to load an assembly into the current application domain. Este método é fornecido como uma praticidade para chamadores de interoperabilidade que não possam chamar o método estático Assembly.Load.This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. Para carregar assemblies em outros domínios de aplicativo, use um método como CreateInstanceAndUnwrap.To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

Para informações comuns a todas as sobrecargas desse método, consulte a sobrecarga do método Load(AssemblyName).For information that is common to all overloads of this method, see the Load(AssemblyName) method overload.

Segurança

SecurityPermission
para carregar um assembly com evidências.to load an assembly with evidence. Enumeração associada: ControlEvidence.Associated enumeration: ControlEvidence.

FileIOPermission
para acesso de leitura de um arquivo ou um diretório, e para acesso às informações no próprio caminho.for access to read from a file or directory, and for access to the information in the path itself. Enumerações associadas: Read, PathDiscovery.Associated enumerations: Read, PathDiscovery.

WebPermission
para ler um caminho que não está no formato "file://" ou "\\\UNC\dir\\" ou "c:\\".for reading a path that is not in the form "file://" or "\\\UNC\dir\\" or "c:\\".

Load(Byte[], Byte[], Evidence) Load(Byte[], Byte[], Evidence) Load(Byte[], Byte[], Evidence) Load(Byte[], Byte[], Evidence)

Aviso

Esta API agora é obsoleta.

Carrega o Assembly com uma imagem baseada em formato COFF, contendo um Assembly emitido.Loads the Assembly with a common object file format (COFF) based image containing an emitted Assembly. Os bytes brutos que representam os símbolos para o Assembly também são carregados.The raw bytes representing the symbols for the Assembly are also loaded.

public:
 virtual System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly, cli::array <System::Byte> ^ rawSymbolStore, System::Security::Policy::Evidence ^ securityEvidence);
[System.Obsolete("Use an overload that does not take an Evidence parameter")]
[System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkId=155570 for more information.")]
public System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence);
abstract member Load : byte[] * byte[] * System.Security.Policy.Evidence -> System.Reflection.Assembly
override this.Load : byte[] * byte[] * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Function Load (rawAssembly As Byte(), rawSymbolStore As Byte(), securityEvidence As Evidence) As Assembly

Parâmetros

rawAssembly
Byte[]

Uma matriz do tipo byte que é uma imagem baseada em COFF contendo um assembly emitido.An array of type byte that is a COFF-based image containing an emitted assembly.

rawSymbolStore
Byte[]

Uma matriz do tipo byte contendo os bytes brutos que representam os símbolos para o assembly.An array of type byte containing the raw bytes representing the symbols for the assembly.

securityEvidence
Evidence Evidence Evidence Evidence

Evidência para carregar o assembly.Evidence for loading the assembly.

Retornos

O assembly carregado.The loaded assembly.

Implementações

Exceções

rawAssembly não é um assembly válido.rawAssembly is not a valid assembly.

- ou --or- A versão 2,0 ou posterior do Common Language Runtime está carregada e rawAssembly foi compilada com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded and rawAssembly was compiled with a later version.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

securityEvidence não é null.securityEvidence is not null. Quando a política CAS herdada não está habilitada, securityEvidence deve ser null.When legacy CAS policy is not enabled, securityEvidence should be null.

Exemplos

O exemplo a seguir demonstra o uso do carregamento de um assembly bruto.The following sample demonstrates the use of loading a raw assembly.

Para este exemplo de código ser executado, você deve fornecer o nome de assembly totalmente qualificado.For this code example to run, you must provide the fully qualified assembly name. Para obter informações sobre como obter o nome totalmente qualificado do assembly, consulte nomes de assembly.For information about how to obtain the fully qualified assembly name, see Assembly Names.

using namespace System;
using namespace System::IO;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
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.
array<Byte>^ loadFile( String^ filename )
{
   FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
   array<Byte>^buffer = gcnew array<Byte>((int)fs->Length);
   fs->Read( buffer, 0, buffer->Length );
   fs->Close();
   return buffer;
}


// Creates a dynamic assembly with symbol information
// and saves them to temp.dll and temp.pdb
void EmitAssembly( AppDomain^ domain )
{
   AssemblyName^ assemblyName = gcnew 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, nullptr );
   ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
   ilGenerator->EmitWriteLine( "MyType instantiated!" );
   ilGenerator->Emit( OpCodes::Ret );
   typeBuilder->CreateType();
   assemblyBuilder->Save( "temp.dll" );
}

ref class Resolver
{
public:
   static Assembly^ MyResolver( Object^ sender, ResolveEventArgs^ args )
   {
      AppDomain^ domain = dynamic_cast<AppDomain^>(sender);
      
      // Once the files are generated, this call is
      // actually no longer necessary.
      EmitAssembly( domain );
      array<Byte>^rawAssembly = loadFile( "temp.dll" );
      array<Byte>^rawSymbolStore = loadFile( "temp.pdb" );
      Assembly^ assembly = domain->Load( rawAssembly, rawSymbolStore );
      return assembly;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   InstantiateMyType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Resolver::MyResolver );
   InstantiateMyType( currentDomain ); // OK!
}

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");
   }
}
Imports System
Imports System.IO
Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyType(currentDomain)      ' Failed!

      AddHandler currentDomain.AssemblyResolve, AddressOf MyResolver
      
      InstantiateMyType(currentDomain)      ' OK!
   End Sub 'Main
   
   
   Sub InstantiateMyType(domain As AppDomain)
      Try
	 ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub 'InstantiateMyType
   
   
   ' Loads the content of a file to a byte array. 
   Function loadFile(filename As String) As Byte()
      Dim fs As New FileStream(filename, FileMode.Open)
      Dim buffer(CInt(fs.Length)) As Byte
      fs.Read(buffer, 0, buffer.Length)
      fs.Close()
      
      Return buffer
   End Function 'loadFile
   
   
   Function MyResolver(sender As Object, args As ResolveEventArgs) As System.Reflection.Assembly
      Dim domain As AppDomain = DirectCast(sender, AppDomain)
      
      ' Once the files are generated, this call is
      ' actually no longer necessary.
      EmitAssembly(domain)
      
      Dim rawAssembly As Byte() = loadFile("temp.dll")
      Dim rawSymbolStore As Byte() = loadFile("temp.pdb")
      Dim myAssembly As System.Reflection.Assembly = domain.Load(rawAssembly, rawSymbolStore)
      
      Return myAssembly
   End Function 'MyResolver
   
   
   ' Creates a dynamic assembly with symbol information
   ' and saves them to temp.dll and temp.pdb
   Sub EmitAssembly(domain As AppDomain)
      Dim assemblyName As New AssemblyName()
      assemblyName.Name = "MyAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Save)
      Dim moduleBuilder As ModuleBuilder = assemblyBuilder.DefineDynamicModule("MyModule", "temp.dll", True)
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Public)
      
      Dim constructorBuilder As ConstructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      ilGenerator.EmitWriteLine("MyType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      assemblyBuilder.Save("temp.dll")
   End Sub 'EmitAssembly

End Module 'Test

Comentários

Começando com o .NET Framework 4.NET Framework 4, o nível de confiança de um assembly que é carregado usando esse método é o mesmo que o nível de confiança do domínio do aplicativo.Beginning with the .NET Framework 4.NET Framework 4, the trust level of an assembly that is loaded by using this method is the same as the trust level of the application domain.

Este método só deve ser usado para carregar um assembly no domínio de aplicativo atual.This method should be used only to load an assembly into the current application domain. Este método é fornecido como uma praticidade para chamadores de interoperabilidade que não possam chamar o método estático Assembly.Load.This method is provided as a convenience for interoperability callers who cannot call the static Assembly.Load method. Para carregar assemblies em outros domínios de aplicativo, use um método como CreateInstanceAndUnwrap.To load assemblies into other application domains, use a method such as CreateInstanceAndUnwrap.

Para informações comuns a todas as sobrecargas desse método, consulte a sobrecarga do método Load(AssemblyName).For information that is common to all overloads of this method, see the Load(AssemblyName) method overload.

Segurança

SecurityPermission
para fornecer evidência.to provide evidence. Enumeração associada: ControlEvidence.Associated enumeration: ControlEvidence. Ação de segurança: Demand.Security action: Demand.

FileIOPermission
para acesso de leitura de um arquivo ou um diretório, e para acesso às informações no próprio caminho.for access to read from a file or directory, and for access to the information in the path itself. Enumerações associadas: Read, PathDiscovery.Associated enumerations: Read, PathDiscovery.

WebPermission
para ler um caminho que não está no formato "file://" ou "\\\UNC\dir\\" ou "c:\\".for reading a path that is not in the form "file://" or "\\\UNC\dir\\" or "c:\\".

Aplica-se a