我有一个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)
答案 0 :(得分:0)
那么你想要添加内存汇编作为参考吗?
我不确定CSharpCodeProvider
是否支持此类方法。