Я пытаюсь сделать следующее:Загрузка сборка байтового массива в новый AppDomain бросает исключение FileNotFound
- Скачать байтовый массив, который содержит сборку, что мне нужно выполнить.
- Загрузить объект из этого узла в новом домене приложения и выполнить метод объекта
Вот мой код, который пытается загрузить сборку в новый домен приложения:
public object Execute(byte[] agentCode)
{
var app = AppDomain.CreateDomain("MonitoringProxy", AppDomain.CurrentDomain.Evidence, new AppDomainSetup {ApplicationBase = AppDomain.CurrentDomain.BaseDirectory}, new PermissionSet(PermissionState.Unrestricted));
app.AssemblyResolve += AppOnAssemblyResolve;
var assembly = app.Load(agentCode);
кодовую базу умирает последней строки со следующим сообщением:
Дополнительная информация: не удалось загрузить файл или сборку «Alertera.AgentProxy, Version = 1.0.0.0, Культура = нейтральная, PublicKeyToken = null 'или одна из ее зависимостей. Система не может найти указанный файл.
Никакой код никогда не попадает на функцию AppOnAssemblyResolve. Что интересно, так это то, что он правильно прочитал название сборки. Кроме того, сборка Alertera.AgentProxy не имеет внешних зависимостей, кроме System и Newtonsoft.Json. Тем не менее, Newtsoft.Json был внедрен в него как ресурс, поэтому его не нужно загружать отдельно.
Любые указатели? Использование .NET 2 для максимальной совместимости
Я думаю, что это не удается, потому что 'Load' загружает сборку в текущий домен (который не имеет обработчика сборки разрешаемыми), в соответствии с Документами:«Этот метод следует использовать только для загрузки сборки в текущий домен приложения. Этот метод предоставляется в качестве удобства для вызывающих абонентов взаимодействия, которые не могут вызвать статический метод Assembly.Load. Чтобы загружать сборки в другие области приложений, используйте такой метод, как CreateInstanceAndUnwrap. " –
Я видел эти комментарии. Думаю, я не уверен, как это сделать. Я вызываю CreateInstanceAndUnwrap, но после того, как сборка загружена в домен приложения. У CreateInstanceAndUnwrap нет способа загрузить массив байтов. Можете ли вы поделиться образцами кода, чтобы правильно загрузить сборку в новый домен приложения? – Igorek
Не знаете об этом, но поможет ли Fuslogvw.exe? – RenniePet