我有一个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)
那么您有要添加作为参考的内存中程序集吗?
我不确定这种方法是否得到支持CSharpCodeProvider
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)