动态编译C#代码而不在内存中堆积程序集

时间:2012-07-26 23:39:41

标签: c# compilation

问题(和一些不必要的信息):我在C#(而不是chatterbot)中创建一个聊天机器人,并希望用户能够在机器人上运行自定义代码。基本上,您通过网络发送字符串消息,并且机器人运行其中包含的代码。

我已经研究并实际实现/使用过CSharpCodeProvider,但是,每次编译自定义代码时都会遇到这个问题,它会向AppDomain添加另一个程序集(这是不可能删除的)。当您考虑到在一生中可能会发生数十或数百个单独的自定义代码调用时,这就成了一个问题。

我的想法是,可能有一种解释性语言或某些可以从C#调用的东西。

1 个答案:

答案 0 :(得分:2)

如果删除整个appdomain,则可以删除程序集。所以你可以创建一个新的appdomain,在那里加载程序集(或从那里编译它)并在使用后处理它。

您可以每100个语句左右回收一次appdomain,以便分摊循环播放所需的(小)时间。