推薦一個(gè)強(qiáng)大C#腳本引擎,方便我們?cè)陧?xiàng)目中,動(dòng)態(tài)執(zhí)行C#腳本。
01
項(xiàng)目簡(jiǎn)介
CS-Script是非常成熟的C#腳本引擎,自2004年起就發(fā)布了,即.NET發(fā)布后的兩年。
支持托管和獨(dú)立(CLI)執(zhí)行模型,可以作為PowerShell的純C#替代品,也可以通過托管腳本引擎在運(yùn)行時(shí)擴(kuò)展.NET應(yīng)用程序。
允許在不影響代碼庫的情況下無縫切換底層編譯技術(shù),目前支持的編譯器有dotnet.exe和csc.exe。
02
開發(fā)工具支持與平臺(tái)兼容
與Visual Studio、VSCode、Sublime Text 3等開發(fā)工具有良好的集成,可以在Windows和Linux上運(yùn)行,類庫針對(duì)".NET Standard"進(jìn)行編譯,因此可以被任何托管應(yīng)用程序托管。
03
使用方法
1、安裝依賴庫
Install-Package CS-Script
2、有返回值的的動(dòng)態(tài)腳本
using CSScriptLib;
dynamic script = CSScript.Evaluator .LoadMethod(@"int Product(int a, int b) { return a * b; // 計(jì)算兩個(gè)數(shù)的乘積 }");
int result = script.Product(3, 2);
Console.WriteLine(result);
3、無返回值的動(dòng)態(tài)腳本
using CSScriptLib;
// 使用CS-Script的Evaluator靜態(tài)類創(chuàng)建一個(gè)委托(Delegate)// 這個(gè)委托指向一個(gè)接受一個(gè)字符串參數(shù)的方法,該方法將字符串輸出到控制臺(tái)var log = CSScript.Evaluator .CreateDelegate(@"void Log(string message) { Console.WriteLine(message); // 使用Console.WriteLine將傳入的消息輸出到控制臺(tái) }");
// 調(diào)用創(chuàng)建的委托,并傳入字符串"Test message"log("Test message"); // 執(zhí)行Log方法,輸出"Test message"到控制臺(tái)
4、簡(jiǎn)單表達(dá)式腳本
using CSScriptLib;
int sum = CSScript.Evaluator.Eval("6 + 3");
Console.WriteLine(sum);
5、實(shí)現(xiàn)了特定接口的C#腳本using CSScriptLib;
ICalc calc = CSScript.Evaluator .LoadCode<ICalc>(@"using System; public class Script: ICalc // 繼承ICalc接口 { public int Sum(int a, int b) // 實(shí)現(xiàn)Sum方法 { return a + b; // 返回兩個(gè)整數(shù)的和 } }");
int result = calc.Sum(1, 2);
Console.WriteLine(result);
04
項(xiàng)目地址
https://github.com/oleg-shilo/cs-script
該文章在 2024/12/24 10:05:14 編輯過