【開源】.Net 動態腳本引擎NScript

開源地址: https://git.oschina.net/chejiangyi/NScript
java

開源QQ羣: .net 開源基礎服務  238543768git

 

.Net 動態腳本引擎 NScriptwindows

  用於解決.net環境windows系統下相似javaGrovvy的功能和方向。
在互聯網項目能夠用來作一些功能,如動態營銷活動(營銷業務解耦和剝離),規則引擎,流程引擎,windows運維腳本,源碼式插件開發等。


使用方式
運維

 包括exe Main方式,程序集方式,應用程序域三種方式。編輯器

最終編譯文件函數

  BSF.BaseService.NScript.exe工具

exe 說明
1) 能夠用cmd命令運行本exe
   /run 命令格式:/run {filename} {args}    
this

   說明:必須實現Main入口函數. {filename} 爲文件路徑,{args}爲Main入口參數,默認空格分隔。
   /help 命令格式:/help    
編碼

   說明:用戶查看當前exe支持的命令說明。
2)exe自己就是腳本編輯器。
   能夠用做.net 腳本的編輯工具,在實際運行環境中直接編輯或臨時修改代碼,開發環境中建議仍是使用vs。
3)exe自己也是腳本運行時。
   整個腳本解析和運行時。
4) exe大小
   exe 自己很小很小,由於打包合併了第三方編輯器控件,才變動大些。
spa

5)exe能夠被解決方案以dll方式引用,並使用NScriptHelper接口方法。

 

Main方式示例

說明:

以exe命令的方式運行腳本示例
1) 點擊「運行」.bat
2) 點擊 "bsf.baseservice.nscript.exe" 進行腳本編輯及調試。

截圖:

壓縮包下載:http://share.weiyun.com/043fe46f11aabc1c2c17eb4d7cfa1e00

 

程序集或應用程序域方式運行示例

說明
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://share.weiyun.com/5b1f0adf5526b01c7f8ace09eaf9d113

 

使用exe編輯腳本示例

 

代碼main.cs文件編寫示例

/*

 * codefiles=a.cs,codes\b.cs;//其餘編譯代碼文件 ,分割多個文件 (支持相對路徑) , 大小寫敏感 (不要有分號和等號)

 * dllfiles=System.dll;//引用的dll,即編譯須要的dll ,分割多個dll (支持相對路徑) ,大小寫敏感 (不要有分號和等號)

 * compilerlanguage=csharp;//編譯語言類型,默認C#,能夠不寫

 */

 

/*

* 以上爲主文件的編譯頭信息,必需要寫置頂在代碼文件頭部。 包含源碼文件信息,dll相關引用信息,代碼編寫語言;

      頭信息中不要很是規的去使用;=號,這個是用來解析的分隔符。主文件建議使用.main.cs命名結尾,這樣能夠自動識別,其餘代碼文件爲cs結尾。

* 如下爲代碼編碼內容,語法遵循.net自己的語法及書寫規範

* by 車江毅

*/

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace mytest //能夠不要命名空間也可

{

    public class B

    {

        //程序集或者應用程序域方式運行

        //關於調試: 經過編輯器」->「調試暫不支持傳入參數調試,可是實際環境是能夠傳入參數的

        public string test()

        {

            return new C().test();

        }

 

        //Main編譯方式須要指定的Main入口函數

        //關於調試: 經過編輯器」->「調試暫不支持傳入參數調試,可是實際環境是能夠傳入參數的

        static void Main(string[] args)

        {

            System.Console.Read();

        }

    }

}

 

by 車江毅

相關文章
相關標籤/搜索