如何使用并发Web用户处理重置CS脚本

时间:2015-01-23 15:42:25

标签: caching compiler-errors reset cs-script

使用CSScript.Evaluator.Reset()时,会重置当前使用相同脚本或构建的其他任何人吗?

提出问题的另一种方式。 script = CSScript.Evaluator.LoadCode(scriptString); 如果另一个用户通过并调用相同的代码,但发生了错误。 原始编译仍然是好的和安全的吗?

CSScript.Evaluator.AutoResetEvaluatorOnError = true,这似乎不起作用。 在我导致代码错误后,修复它。编译将无法工作,直到我重置我的应用程序,或使用重置()。

使用重置是有效的,但那是我最初提问的原因。

我正在使用CSScript.Evaluator.LoadCode并查看CSScript.Evaluator.LoadMethod,但遇到了同样的问题。

这些不是大型脚本,但可以大批量或循环运行。 不反对独特的命名,因为无论如何我将为每次运行构建。 但我不确定缓存是否正常工作。

启用CSScript.CacheEnabled时,缓存文件夹的位置在哪里?

1 个答案:

答案 0 :(得分:1)

  

原始编译仍然是好的和安全的吗?

是的,就像你持有对编译对象的引用一样,它就是你的。即使你破坏了编译器,我也很好。

  

CSScript.Evaluator.AutoResetEvaluatorOnError = true,这似乎不起作用。

此设置触发如此冷的SoftReset,它仅通过重新引用程序集并重新创建CompilerSettings对象而与Reset不同。初始实现时,SoftReset足以完全清除Mono.Evaluator。我需要检查可能不是这样的情况。我会告诉你结果。

  

启用CSScript.CacheEnabled时,缓存文件夹的位置在哪里?

缓存并不涵盖Mono Evaluator,因为所有程序集都在内存中,无法缓存。 通过CSScript.Evaluator。*访问的所有内容都适用于Mono编译器以及它通过CSScript访问的所有内容。*是CodeDOM编译器,它确实实现了缓存机制。