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

时间:2011-04-12 20:03:59

标签: c# .net assemblies

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

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

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

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

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


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

CompilerParameters.ReferencedAssemblies.Add(Assembly a)

1 个答案:

答案 0 :(得分:0)

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

我不确定CSharpCodeProvider是否支持此类方法。