Как загрузить приложение с dll из памяти в домен приложений и выполнить его? - PullRequest
3 голосов
/ 06 августа 2010

У меня есть несколько потоков со сборкой и ее используемыми dll. Как я могу загрузить их в домен приложений и выполнить основную сборку? Я бы предпочел не сохранять файлы на диск, если этого можно избежать.

1 Ответ

1 голос
/ 06 августа 2010

Получить сборку можно с помощью следующего механизма.

Assembly myAssembly = Assembly.Load(<your raw file stream>);

Вы можете зарегистрироваться для следующего события и обрабатывать его для обслуживания запрашиваемых типов, поступающих из пользовательских сборок:

AppDomain.CurrentDomain.TypeResolve += new ResolveEventHandler(CurrentDomain_TypeResolve);

static Assembly CurrentDomain_TypeResolve(object sender, ResolveEventArgs args)
    {
        Type  resolvedType =  myAssembly.GetType( args.Name, false);
    }

К сожалению, любой тип, загруженный в вашу программу, может оказаться здесь, поэтому вы можете захотеть встроить некоторый механизм кэширования для хранения информации о типе

...