【问题标题】:Supply Assembly to CompilerParameters ReferencedAssemblies from memory and not disk?从内存而不是磁盘向 CompilerParameters ReferencedAssemblies 提供程序集?
【发布时间】: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


【解决方案1】:

那么您有要添加为参考的内存程序集?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 2011-06-08
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多