支持应用内脚本 .NET 应用程序

我目前正在评估针对我的 .NET 应用程序的脚本选项。用户应该能够编写脚本(在应用程序内的专用文本/代码编辑器中)来控制应用程序本身。该应用程序完全由 C# 编写。作为脚本语言,我目前正在评估

  • LUA
  • IronPython

我找到了下面的文章(https://www.cyotek.com/blog/adding-scripting-to-net-applications),该文章依赖于 JavaScript,这也可能是一种选择。目前我还不清楚如何提供应用程序中使用的内部对象和自定义函数给使用的脚本。上面的链接依赖于 JINT(JavaScript Interpreter for .NET),该解释器提供了在脚本中添加自己的方法和对象的方法:

  protected virtual void InitializeEnvironment()
  {
    this.AddFunction("print", new Action<object>(this.WriteLine));
    this.AddFunction("log", new Action<object>(this.WriteLine));
    this.AddFunction("cls", new Action(this.ClearScreen));

    // interactive functions
    this.AddFunction("alert", new Action<object>(this.ShowAlert));
    this.AddFunction("confirm", new Func<object, bool>(this.ShowConfirm));
    this.AddFunction("prompt", new Func<object, object, string>(this.ShowPrompt));
  }

我没有找到 IronPython 实现此功能的方法 - 至少在文档中没有提到,也没有这种方法的示例。也许我完全走了弯路 - 任何帮助/提示都将不胜感激。

原文链接 https://stackoverflow.com/questions/69945377

点赞
stackoverflow用户17206346
stackoverflow用户17206346

对于资源消耗很小的使用,IronPython可能是一个不错的选择。

你可以在执行范围内添加自定义函数: 在IronPython作用域中添加静态方法

您可能还想查看 AlterNET Studio:

https://www.alternetsoft.com/products/studio

这是一款商业库,提供以下语言/技术的应用内脚本/调试功能:

  • 基于Roslyn的C#/Visual Basic

  • 基于ClearScript和Google开发工具的TypeScript/JavaScript

  • 基于Debug Adapter Protocol的Python - 这还在开发中。

您可以在这里找到更多信息:

https://www.alternetsoft.com/news/alternet-studio-7-0-highlights

https://www.alternetsoft.com/blog/python-script-debugger-based-on-debug-adapter-protocol

使用所有这些选项,您可以访问在.NET应用程序中定义的对象。但是,在脚本执行性能,应用内调试,内存占用等方面,它们各有优劣。

如果您只需要脚本,那么您不需要商业级解决方案,但如果您还需要脚本调试或代码编辑/编写功能,则可能对您的应用程序有价值。

Dmitry

2021-11-13 22:26:38