【问题标题】:In-App Scripting Support .NET Application应用内脚本支持 .NET 应用程序
【发布时间】:2021-12-24 22:43:51
【问题描述】:

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

  • LUA
  • 铁蟒

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

  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 的方法 - 至少文档中没有提到它,并且没有这种方法的示例。也许我在这里完全走错了路 - 任何帮助/提示都会很棒。

【问题讨论】:

  • 第三个选项:使用 CSharpCodeProvider 的 C# 脚本。
  • 你可以用NLua添加Lua脚本
  • @Egor 是的,我知道,但在这里我遇到了同样的问题。如何添加自己的方法和对象...
  • RegisterTableFunction

标签: c# lua scripting ironpython


【解决方案1】:

对于轻量级的使用 IronPython 可能是一个不错的选择。 您可以在执行范围内添加自定义函数:

Adding static method to IronPython scope

您可能还想在这里查看 AlterNET 工作室:

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

这是一个商业库,可为以下语言/技术提供应用内脚本/调试:

-C#/Visual Basic,基于 Roslyn

-TypeScript/JavaScript 基于 ClearScript 和 Google 开发者工具

铁蟒

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 应用程序中定义的对象,但它们在脚本执行性能、应用内调试、内存占用等方面各有利弊。

如果您只需要脚本,则不需要商业级解决方案,但如果您还需要在应用程序中进行脚本调试或代码编辑/编写功能,它可能会很有价值。

德米特里

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多