Precisa conectar o evento AssemblyResolve quando DisallowApplicationBaseProbing = true
Eu preciso ligar um evento AssemblyResolve no meu AppDomain criado quando eu definir DisallowApplicationBaseProbing = true. A razão pela qual estou fazendo isso é forçar o tempo de execução a chamar o evento AssemblyResolve necessário para resolver um assembly, em vez de sondar primeiro. Dessa forma, outro desenvolvedor não pode simplesmente colar MyDllName.dll no diretório ApplicationBase e substituir o assembly que eu queria carregar no evento AssemblyResolve.
A questão de fazer isso é a seguinte ...
class Program
{
static void Main()
{
AppDomainSetup ads = new AppDomainSetup();
ads.DisallowApplicationBaseProbing = true;
AppDomain appDomain = AppDomain.CreateDomain("SomeDomain", null, ads);
appDomain.AssemblyResolve += OnAssemblyResolve;
appDomain.DoCallBack(target);
}
static System.Reflection.Assembly OnAssemblyResolve(object sender, ResolveEventArgs args)
{
Console.WriteLine("Hello");
return null;
}
private static void target()
{
Console.WriteLine(AppDomain.CurrentDomain);
}
}
O código nunca ultrapassa a linha + = OnAssemblyResolve.
Quando o código tenta executar, o novo domínio de aplicativo tenta resolver o assembly que estou executando. Como DisallowApplicationBaseProbing = true, não tem idéia de onde encontrar esse assembly. Eu tenho um problema de galinha e ovo, parece. Ele precisa resolver meu assembly para ligar o resolvedor de montagem, mas precisa do resolvedor de assembly para resolver o meu assembly.
Obrigado por toda e qualquer ajuda.
-Mike