我目前从远程流中获取一个汇编作为字节数组。无论如何将其加载到新的AppDomain中?
AppDomain.Load(byte [])不起作用,因为它给了我FileNotFoundException,我假设程序集必须在我的计算机上。
AppDomain domain = AppDomain.CreateDomain("Test");
Thread t = new Thread(() =>
{
Assembly assembly = domain.Load(bytes);
MethodInfo method = assembly.EntryPoint;
if (method != null)
{
object o = assembly.CreateInstance(method.Name);
try
{
method.Invoke(o, null);
}
catch (TargetInvocationException ex)
{
Console.WriteLine(ex.ToString());
}
}
});
t.Start();
答案 0 :(得分:1)
您需要将该字节数组传递给在新AppDomain中运行的代码,并在该数据上调用Load(byte[])。
现在,与任何加载程序集一样,您需要了解在使用不同的加载程序集方法时如何解析依赖项。在大多数情况下,您必须将依赖项预加载到新的AppDomain或添加AssemblyResolver事件处理程序。搜索"C# LoadFrom Cook"以获取Suzanne Cook关于装载装配的文章集。