Я переношу приложение Java, где классы загружаются и выполняются во время выполнения из памяти (массив байтов). Я пытаюсь достичь того же самого в C#, но у меня возникают проблемы (System.IO.FileNotFoundException
исключений) при попытке загрузить сборки из массивов байт (используя метод AppDomain.Load
).Загрузить сборку из памяти
static void Main(string[] args)
{
var domain = AppDomain.CreateDomain("foo");
domain.AssemblyResolve += new ResolveEventHandler(domain_AssemblyResolve);
var assembly = domain.Load("MyAssembly");
}
static Assembly domain_AssemblyResolve(object sender, ResolveEventArgs args)
{
// ...
return Assembly.ReflectionOnlyLoad(File.ReadAllBytes(@"C:\MyAssembly.exe"));
}
Есть ли способ, чтобы загрузить их без необходимости упорствовать этот массив байтов в файловой системе?
Упрощение идеи, мы хотим иметь возможность выполнять и изменять (обновлять) код динамически. Мы используем отдельные домены приложений для «загрузки/выгрузки» сборок.
Байт-массив должен прибывать откуда-то. Вы можете открыть сетевое подключение или использовать методы общей памяти для получения байтов. –