3

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

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

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

4

1 回答 1

2

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

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

于 2012-07-26T23:42:46.437 回答