将Byte []程序集加载到新的AppDomain中

时间:2012-08-25 00:05:22

标签: c# byte appdomain

我目前从远程流中获取一个汇编作为字节数组。无论如何将其加载到新的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();

1 个答案:

答案 0 :(得分:1)

您需要将该字节数组传递给在新AppDomain中运行的代码,并在该数据上调用Load(byte[])

现在,与任何加载程序集一样,您需要了解在使用不同的加载程序集方法时如何解析依赖项。在大多数情况下,您必须将依赖项预加载到新的AppDomain或添加AssemblyResolver事件处理程序。搜索"C# LoadFrom Cook"以获取Suzanne Cook关于装载装配的文章集。