【发布时间】:2019-08-23 15:03:12
【问题描述】:
我有一个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)
【问题讨论】:
-
没有意识到这是一场比赛,或者我什至“应该”将问题标记为已回答。
标签: c# .net assemblies