我目前正在评估我的 .NET 应用程序的脚本选项。用户应该能够编写脚本(在应用程序内的专用文本/代码编辑器中)来控制应用程序本身。该应用程序完全用 C# 编写。作为脚本语言,我目前正在评估
我发现以下文章(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 执行此操作的方法 - 至少文档中没有提及,并且没有这种方法的示例。也许我完全走错了路——任何帮助/提示都会很棒。
对于轻量级使用,IronPython 可能是不错的选择。 您可以在执行范围中添加自定义函数:
您可能还想在这里查看 AlterNET 工作室:
https://www.alternetsoft.com/products/studio
这是一个商业库,为以下语言/技术提供应用内脚本/调试:
-C#/Visual Basic,基于 Roslyn
-基于 ClearScript 和 Google 开发者工具的 TypeScript/JavaScript
铁蟒
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 应用程序中定义的对象,但在脚本执行性能、应用内调试、内存占用等方面,它们各有利弊。
如果您仅需要脚本编写,则不需要商业级解决方案,但如果您还需要应用程序中的脚本调试或代码编辑/编写功能,那么它可能很有价值。
德米特里
Code Engine 是一个简单但功能强大的代码执行引擎。它设计用于应用程序,您希望使业务用户能够在安全且受控的环境中维护应用程序逻辑片段,提供编译和部署代码无法实现的自动化灵活性和可维护性级别,并且这样做不会牺牲应用程序的性能和安全性。