我可以编译并执行C#表达式而不将程序集保存到磁盘吗?

时间:2010-05-10 18:23:22

标签: c# .net compilation

我可以编译,获取实例并调用任何C#类型programmaticaly的方法。有很多信息,包括StackOverflow(How can I evaluate a C# expression dynamically?)。我的问题是我在Web环境中无法将任何内容保存到/ bin目录中。我可以编译“内存中”,因为上面提到的链接建议,但后来我将无法从当前的AppDomain“卸载”我的自定义程序集。过了一会儿,这将成为一个巨大的记忆问题。是否可以打开一个新的AppDomain,编译新的程序集“内存中”,评估一些表达式或访问该新程序集中的该程序集的某些成员并在完成时安全地终止该AppDomain,所有这些都不会保存到硬盘驱动器?提前感谢任何链接,建议等。

2 个答案:

答案 0 :(得分:2)

您是否看过.Net中的DynamicMethod类型?此类型使用Reflection.Emit在内存方法中启用垃圾收集。这听起来就像你正在寻找的。

答案 1 :(得分:1)