如何将带有dll的应用程序从内存加载到AppDomain并执行它?

时间:2010-08-06 19:06:14

标签: c# assemblies appdomain

我有几个带有程序集及其使用过的dll的流。如何将它们加载到AppDomain并执行主程序集?如果可以避免,我宁愿不将文件保存到磁盘。

1 个答案:

答案 0 :(得分:1)

您可以通过以下机制使用获取程序集。

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);
    }

不幸的是,程序中加载的任何类型都会在此处结束,因此您可能希望构建一些缓存机制来存储类型信息