.Net 是否有一种可嵌入的脚本语言,它支持某种产量(程序停止并将控制权交还给主机......下次运行它会从中断的地方继续)?
此外,应该可以保存 vm 的状态,并让它在以后继续运行。
Edit1:我看过 lua,虽然可以从 c# 访问全局变量,但这样做的整个方法感觉很笨拙。
Edit2:我也在看 Ironruby,似乎可以查询和设置全局变量,但不能一次性获得所有变量。
.Net 是否有一种可嵌入的脚本语言,它支持某种产量(程序停止并将控制权交还给主机......下次运行它会从中断的地方继续)?
此外,应该可以保存 vm 的状态,并让它在以后继续运行。
Edit1:我看过 lua,虽然可以从 c# 访问全局变量,但这样做的整个方法感觉很笨拙。
Edit2:我也在看 Ironruby,似乎可以查询和设置全局变量,但不能一次性获得所有变量。
用 VB 或 C# 编写它,并使用定义良好的类树来保存您的所有状态。这棵树将包含一个根类,所有数据都在列表等中,可序列化。
在适当的时候,将所有内容 XML 序列化为流文件。
重新启动时,从保存的文件中反序列化并从上次中断的地方开始。
嘘。
有一本关于在 boo 中制作自己的嵌入式 DSL 的书。我强烈推荐阅读(Oren the great): http: //www.manning.com/rahien/
示例章节: http: //www.manning.com/rahien/Sample1.pdf
以下是嵌入它的方法:
http: //boo.codehaus.org/Boo+as+an+embedded+scripting+language
bungee# 是一个 C# 脚本。实际上是用 c# 开发的一种编程语言,语法与 C# 相同。Bungee# 将在短时间内成为一个开源项目,但尚未发布。您将能够在 codeplex 上找到源代码。我想这是你想要的东西。因为它几乎支持 c# 中的所有关键字,并且定义了一些方法,您也可以在其中编写新方法。我希望你会喜欢它。蹦极链接是这个但尚未发布
您是否尝试过使用 C# 作为“脚本语言”?请参阅http://www.csscript.net以获取将 c# 作为脚本轻松集成到应用程序中的库。它使用 .NET 构建的编译器从文件或字符串中创建和加载新程序集。你可以在你的应用程序中做任何你可以做的事情,因为你有一个完整的 c#。包括产量。要暂停“VM”,您可以让脚本在线程中运行并暂停和恢复它。
我建议再看一遍 lua,如果你觉得有些东西是 hacky,只要确保你做对了,然后将它包装在一个类中,这样你以后就不那么 hacky 了。如果这是一个问题,那么已经有现有的托管 lua 解决方案可供使用。有时你根本无法找到一个非 hacky 的解决方案,因为还没有人费心去做。
根据上下文,PowerShell可能是一个不错的选择。可以在此处找到有关如何在 .Net 应用程序中托管PowerShell的文档,PowerShell 支持在每个命令库上执行命令 以及将代码块添加到要运行的PipeLine。
保存 vm 的状态听起来有点棘手,我没有发现任何证据表明这可以通过PowerShell实现。但是,您可以使用名为Export-Clixml 的 CmdLet来保存您可能感兴趣的任何对象的状态。
如果您的脚本需要与环境交互,PowerShell将是一个很好的选择,因为除了厨房水槽之外的所有东西似乎都会弹出PowerShell 模块。这就是在CodePlex上搜索的结果。