0

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

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

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

使用重置是有效的,但这就是我最初提出问题的原因。

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

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

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

4

1 回答 1

1

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

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

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

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

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

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

于 2015-01-24T00:36:22.023 回答