当前位置: 首页 > 软件库 > 程序开发 > 推荐引擎 >

NScript

.Net 动态脚本引擎
授权协议 Apache
开发语言 C#
所属分类 程序开发、 推荐引擎
软件类型 开源软件
地区 国产
投 递 者 曾新立
操作系统 Windows
开源组织
适用人群 未知
 软件概览

NScript 是 .net 动态脚本引擎, 解决.net环境windows系统下类似java中Grovvy的功能和方向。在互联网项目可以用来做动态营销活动(营销业务解耦和剥离),规则引擎,流程引擎,windows运维脚本,源码式插件开发等。

使用方式

包括exe Main方式,程序集方式,应用程序域三种方式。

最终编译文件

BSF.BaseService.NScript.exe

exe 说明
1) 可以用cmd命令运行本exe
   /run 命令格式:/run {filename} {args}    

   说明:必须实现Main入口函数. {filename} 为文件路径,{args}为Main入口参数,默认空格分隔。
   /help 命令格式:/help    

   说明:用户查看当前exe支持的命令说明。
2)exe本身就是脚本编辑器。
   可以用作.net 脚本的编辑工具,在实际运行环境中直接编辑或临时修改代码,开发环境中建议还是使用vs。
3)exe本身也是脚本运行时。
   整个脚本解析和运行时。
4) exe大小
   exe 本身很小很小,因为打包合并了第三方编辑器控件,才变更大些。

5)exe可以被解决方案以dll方式引用,并使用NScriptHelper接口方法。

Main方式示例

说明:

以exe命令的方式运行脚本示例
1. 点击“运行.bat”
2. 点击 "bsf.baseservice.nscript.exe" 进行脚本编辑及调试。

截图:
压缩包下载:http://share.weiyun.com/043fe46f11aabc1c2c17eb4d7cfa1e00
(或git源码目录下/文档/demo)

程序集或应用程序域方式运行示例

说明
1) 解决方案引用"BSF.BaseService.NScript.exe"
2) 程序集方式及应用程序域方式使用代码demo。

        {
            this.richTextBox1.Text = @" public class B
            {
                //static void Main(string[] args)
                //{
                //    System.Console.WriteLine(""hello"");
                //    System.Console.ReadLine();
                //    System.Console.ReadKey();
                //}
                public string test(string a)
                {
                    return a;
                }
            }";
        }
        //程序集方式
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string code = this.richTextBox1.Text;
                CompilerResult result = null;
                var r = NScriptHelper.Run(new CompilerParams()
                {
                    EnumSourceType = Core.EnumSourceType.Code,
                    EnumCompilerMode = Core.EnumCompilerMode.Assembly,
                    CodeOrFileName = code
                },
                     "B", "test", new object[] { "a" }, out result);
                MessageBox.Show(r);
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
            }
        }

        //应用程序域方式
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                string code = this.richTextBox1.Text;
                CompilerResult result = null;
                var r = NScriptHelper.Run(new CompilerParams()
                {
                    EnumSourceType = Core.EnumSourceType.Code,
                    EnumCompilerMode = Core.EnumCompilerMode.AppDomian,
                    CodeOrFileName = code
                },
                     "B", "test", new object[] { "a" }, out result);
               
                MessageBox.Show(r);
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
            }
        }
 相关资料
  • 问题内容: 我正在尝试对聚合执行以下查询: 并引发以下异常: 任何想法我该如何解决。参考: http://www.elasticsearch.org/guide/zh- CN/elasticsearch/reference/current/search-aggregations-metrics-sum- aggregation.html 问题答案: 默认情况下,elasticsearch中禁用动态

  • 我正在尝试以下关于聚合的查询: 它引发以下异常: 你知道我该怎么解决这个问题吗。参考: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-sum-aggregation.html

  • 本文向大家介绍Python中的 ansible 动态Inventory 脚本,包括了Python中的 ansible 动态Inventory 脚本的使用技巧和注意事项,需要的朋友参考一下 1.Ansible Inventory  介绍; Ansible Inventory 是包含静态 Inventory 和动态 Inventory 两部分的,静态 Inventory 指的是在文件中指定的主机和组,

  • 问题内容: 我正在使用詹金斯管道项目。在脚本中,我想以动态方式编写 并行 块,因为节点数可以更改。例如,从此: 像这样 但是这种方式行不通,Groovy / Jenkins对这种语法不满意。有人可以建议一种更好的方法吗? 问题答案: 您可以像先定义节点图一样,然后将其执行为。

  • Groovy 不仅仅被用来定义一个任务可以做什么. 举个例子, 你可以使用它来动态的创建任务. 例子 6.8. 动态的创建一个任务 build.gradle 4.times { counter -> task "task$counter" << { println "I'm task number $counter" } } 这里动态的创建了 task0, task

  • 一个非常小的script脚本引擎,可以同时在j2me / j2se / c++ platform上面运行 它的目标是使用这个脚本引擎便于开发一个更加灵活的j2me 游戏这个脚本有点像BASIC这东西不错,是一个开源的脚本引擎,大家可以学习里面的思想里面其中带了一个例子,是3子棋。感觉挺不错的。这东西在SF也挺活跃的。

  • 本文向大家介绍vue如何实现动态加载脚本,包括了vue如何实现动态加载脚本的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了vue如何实现动态加载脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天在研究,tinymce富文本编辑器怎样在vue中使用,然后看到其它框架上的使用方法,它是动态加载tinymce脚本的,若果在本地引入静态

  • 问题内容: 我正在尝试根据文档中的值创建动态参数。 我到目前为止在这里尝试过 这引发了以下错误: 我想使参数动态化,以便doc值确定要扣除的值。 使用ElasticSearch 7.2 一个复杂而糟糕的方法是使用以下脚本 Es对象: 问题答案: 您需要尝试不使用单引号。