【问题标题】:How to compile c# code into memory?如何将c#代码编译到内存中?
【发布时间】:2012-06-16 21:43:39
【问题描述】:

我正在使用微软的 CSharpCodeProvider 来动态创建和执行代码。

现在,它在一个 dll 中创建一个程序集,位于一个临时文件夹内。

我想让它在内存中创建一个程序集,而不必将其写入硬盘。

我该怎么做?

【问题讨论】:

  • 不是重复的。提供的线程关注如何使用 CSharpCodeProvider。我在问如何在不生成临时程序集的情况下使用它
  • 我想知道...这个编译和只保存DLL到内存有什么用?
  • 我在 .net 中尝试基因编程时遇到了这个问题。您需要尽可能快地自动生成和编译代码、运行和测试它。此处的磁盘命中是不可取的。回到 .net2.0 时代,这似乎是不可避免的。我不知道这是否改变了。

标签: c# .net compiler-construction compilation


【解决方案1】:

我认为你只是在寻找CompilerParameters.GenerateInMemory

编译时传入的编译器参数设置为true,不会生成文件。

【讨论】:

  • 虽然这会进行临时磁盘写入,因为 code-dom 正在调用 csc.exe
  • @usr:这是我要说的实现细节。我怀疑将来它很可能不会这样做。在今天的所有情况下,我什至都不能 100% 确定这种说法的真实性。
  • 目前 .NET 平台上没有可用的内存编译器技术 (AFAIK)。我上次检查是在 .NET 2.0 天。
  • @usr:请记住,动态类型已经需要大量编译器存在于内存中,编译器团队最近所做的工作很可能会在未来。 (我希望最终成为托管编译器。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 2021-08-16
  • 2019-08-24
  • 1970-01-01
相关资源
最近更新 更多