Я портирую приложение 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"));
}
Есть ли способ загрузить их без необходимости сохранения этого байтового массива в файловой системе?
Упрощая идею, мы хотим получитьВозможность динамического выполнения и изменения (обновления) кода.Мы используем отдельные домены приложений для «загрузки / выгрузки» сборок.