支持应用内脚本 .NET 应用程序
2021-11-12 15:35:20
收藏:0
阅读:210
评论:1
我目前正在评估针对我的 .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
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
对于资源消耗很小的使用,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