从内存而不是磁盘向CompilerParameters ReferenceAsAsmblies提供程序集?

我有一个CompilerParameters对象,用于提供Microsoft.CSharp.CSharpCodeProvider对象和从中派生的ICodeCompiler对象。

一切正常,我可以动态编译代码。 我的问题是引用的程序集。 现在,我只需将System.Reflection.Assembly.GetExecutingAssembly().GetReferencedAssemblies()所有程序集添加到编译器参数的ReferencedAssemblies 。 这适用于硬盘上的文件。 但是我有一个在内存中而不在磁盘上的程序集。 当我尝试引用它时,我得到一个FileNotFoundException ,我期望它,因为它试图添加一个不存在的路径。

那么如何将实际的Assembly对象传递给CompilerParameters.ReferencedAssemblies

我从2006年开始在网上看过几篇post,之前说这根本不可能。 我希望.net 3.5和.net 4.0已经添加了对这类内容的支持,但我不确定。

仅供参考,我使用的是.NET 4.0


此外,我现在正在程序空间的byte []创建一个临时文件,然后将该文件加载到程序集中。 我知道编译器会在后台执行此操作,但我相信它也会自行清理。 如果我能这样做会很棒:

 CompilerParameters.ReferencedAssemblies.Add(Assembly a) 

那么你想要添加内存汇编作为参考?

我不确定CSharpCodeProvider是否支持这种方法。