gpt4 book ai didi

c# - 从内存而不是磁盘向 CompilerParameters ReferencedAssemblies 提供程序集?

转载 作者:可可西里 更新时间:2023-11-01 09:15:54 25 4
gpt4 key购买 nike

我有一个 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 是否支持这种方法。

关于c# - 从内存而不是磁盘向 CompilerParameters ReferencedAssemblies 提供程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5640942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com