Мне нужно подключить событие AssemblyResolve на моем созданном AppDomain, когда я установил DisallowApplicationBaseProbing = true. Причина, по которой я делаю это, - заставить среду выполнения вызвать событие AssemblyResolve, необходимое для разрешения сборки, вместо того, чтобы сначала опробовать. Таким образом, другой разработчик не может просто вставить MyDllName.dll в каталог ApplicationBase и переопределить сборку, которую я хотел загрузить в событии AssemblyResolve.Необходимо подключить событие AssemblyResolve, когда DisallowApplicationBaseProbing = true
Проблема с выполнением этого заключается в следующем ...
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);
}
}
Код никогда не получает мимо + = OnAssemblyResolve линии.
Когда код пытается выполнить, новый домен приложения пытается разрешить сборку, в которой я выполняюсь. Поскольку DisallowApplicationBaseProbing = true, он не знает, где найти эту сборку. У меня есть курица & проблема с яйцом кажется. Он должен разрешить мою сборку, чтобы подключить сборщик, но для решения моей сборки нужен сборщик.
Спасибо за любую помощь.
-Mike
Вы видите вывод 'Console.WriteLine (« Hello »);'? Если да, возможно, вам следует реализовать логику, способную разрешать сборки. Я наткнулся на этот вопрос, потому что у меня такая же проблема. Если я найду решение, я отправлю ответ. –