Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
Este artigo é específico do .NET Framework. Ele não se aplica a implementações mais recentes do .NET, incluindo o .NET 6 e versões posteriores.
Há várias maneiras de carregar um assembly em um domínio de aplicativo. A maneira recomendada é usar o static método (Shared no Visual Basic) Load da System.Reflection.Assembly classe. Outras maneiras de carregar assemblies incluem:
O método LoadFrom da classe Assembly carrega um assembly dado o local do arquivo. Carregar assemblies com esse método usa um contexto de carga diferente.
Os métodos ReflectionOnlyLoad e ReflectionOnlyLoadFrom carregam um assembly no contexto de reflexão somente. Assemblies carregados nesse contexto podem ser examinados, mas não executados, permitindo o exame de assemblies que têm como alvo outras plataformas. Veja como carregar assemblies no contexto de Reflection-Only.
Observação
O contexto apenas reflexão é novo na versão 2.0 do .NET Framework.
Métodos como CreateInstance e CreateInstanceAndUnwrap da AppDomain classe podem carregar assemblies em um domínio de aplicativo.
O Load método da System.AppDomain classe pode carregar assemblies, mas é usado principalmente para interoperabilidade COM. Ele não deve ser usado para carregar assemblies em um domínio de aplicativo diferente do domínio do aplicativo do qual ele é chamado.
Observação
A partir do .NET Framework versão 2.0, o runtime não carregará um assembly compilado com uma versão do .NET Framework que tenha um número de versão maior do que o runtime carregado no momento. Isso se aplica à combinação dos componentes principais e secundários do número de versão.
Você pode especificar a maneira como o código compilado just-in-time (JIT) de assemblies carregados é compartilhado entre domínios de aplicativo. Para obter mais informações, consulte os domínios e assemblies do aplicativo.
Example
O código a seguir carrega um assembly chamado "example.exe" ou "example.dll" no domínio do aplicativo atual, obtém um tipo nomeado Example do assembly, obtém um método sem parâmetros nomeado MethodA para esse tipo e executa o método. Para uma abordagem completa sobre como obter informações de um assembly carregado, consulte Dynamically Loading and Using Types.
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