当前位置: 首页 > article >正文

cs-script:一个非常成熟的C#脚本开源引擎

推荐一个强大C#脚本引擎,方便我们在项目中,动态执行C#脚本。

01 项目简介

CS-Script是非常成熟的C#脚本引擎,自2004年起就发布了,即.NET发布后的两年。

支持托管和独立(CLI)执行模型,可以作为PowerShell的纯C#替代品,也可以通过托管脚本引擎在运行时扩展.NET应用程序。

允许在不影响代码库的情况下无缝切换底层编译技术,目前支持的编译器有dotnet.exe和csc.exe。

02 开发工具支持与平台兼容

与Visual Studio、VSCode、Sublime Text 3等开发工具有良好的集成,可以在Windows和Linux上运行,类库针对".NET Standard"进行编译,因此可以被任何托管应用程序托管。

03 使用方法

1、安装依赖库

Install-Package CS-Script

2、有返回值的的动态脚本

using CSScriptLib; 

// 使用CS-Script的Evaluator静态类加载一个动态方法
// 这个方法接受一个字符串形式的C#代码,并编译执行它
dynamic script = CSScript.Evaluator
    .LoadMethod(@"int Product(int a, int b)
                       {
                           return a * b; // 计算两个数的乘积
                       }");

// 调用加载的方法,并传入两个参数3和2
int result = script.Product(3, 2);

// 输出结果到控制台
Console.WriteLine(result); // 输出:6

3、无返回值的动态脚本

using CSScriptLib;

// 使用CS-Script的Evaluator静态类创建一个委托(Delegate)
// 这个委托指向一个接受一个字符串参数的方法,该方法将字符串输出到控制台
var log = CSScript.Evaluator
                  .CreateDelegate(@"void Log(string message)
                                    {
                                        Console.WriteLine(message); // 使用Console.WriteLine将传入的消息输出到控制台
                                    }");

// 调用创建的委托,并传入字符串"Test message"
log("Test message"); // 执行Log方法,输出"Test message"到控制台


4、简单表达式脚本

using CSScriptLib; 

// 使用CS-Script的Evaluator静态类的Eval方法直接评估一个C#表达式
// 这里评估的表达式是"6 + 3",即计算6和3的和
int sum = CSScript.Evaluator.Eval("6 + 3");

// 输出计算结果到控制台
Console.WriteLine(sum); // 打印计算结果,即9

5、实现了特定接口的C#脚本

using CSScriptLib; 

// 使用CS-Script的Evaluator静态类的LoadCode方法加载一个实现了ICalc接口的C#脚本
// 这个脚本定义了一个名为Script的类,它实现了ICalc接口中的Sum方法
ICalc calc = CSScript.Evaluator
    .LoadCode<ICalc>(@"using System;
                        public class Script: ICalc // 继承ICalc接口
                        {
                            public int Sum(int a, int b) // 实现Sum方法
                            {
                                return a + b; // 返回两个整数的和
                            }
                        }");

// 调用加载的脚本中的Sum方法,并传入参数1和2
int result = calc.Sum(1, 2);

// 输出结果到控制台
Console.WriteLine(result); // 打印Sum方法的执行结果,即3

04 项目地址

https://github.com/oleg-shilo/cs-script

更多开源项目: https://github.com/bianchenglequ/NetCodeTop

我是编程乐趣,一个.Net开发经验老程序员,欢迎“关注”我,每天为你分享开源项目和编程知识。
也欢迎加入【.Net技术编程交流社区】,和大家共同学习交流!,
点击加入:https://bbs.csdn.net/topics/613465368

- End -

推荐阅读

2个零基础入门框架教程!

一款可以替代Navicat的数据库管理工具

CSCore:一个.Net功能强大且灵活的开源音频处理库

Blazor开源UI简洁组件:10个热门.Net开源项目推荐!

ExcelDataReader:一个.Net高性能Excel开源读取器


http://www.kler.cn/a/452985.html

相关文章:

  • python+reportlab创建PDF文件
  • 【ES6复习笔记】模板字符串(3)
  • 攻防世界 cookie
  • 在跨平台开发环境中构建高效的C++项目:从基础到最佳实践20241225
  • 【读书笔记】《论语别裁》爱与罪
  • 容器技术所涉及Linux内核关键技术
  • Zero Trust 模型:重新定义数字化时代的安全策略
  • docker 释放磁盘空间--常用清理命令
  • Mac 查询IP配置,网络代理
  • C语言版解法力扣题:将整数按权重排序
  • mysql 查询优化之字段建立全文索引
  • 使用Python实现量子计算应用:走进量子世界的大门
  • 常用滤波算法之中位值滤波算法
  • Artec Space Spider助力剑桥研究团队解码古代社会合作【沪敖3D】
  • centos server系统新装后的网络配置
  • 安卓 自定义矢量图片控件 - 支持属性修改矢量图路径颜色
  • Go入门篇:(一)golang的安装和编辑工具安装
  • MySQL深度解析:高效查询优化与实战案例
  • 【JAVA高级篇教学】第四篇:MySQL 5.7 与 MySQL 8 的区别
  • 【LeetCode】394、字符串解码
  • python怎么看矩阵维数
  • 低代码配置式组态软件-BY组态
  • 深入理解 MySQL 索引
  • 数据流动背后的“暗流涌动”,企业如何借助多源威胁检测响应高效捕捉安全威胁?
  • IDEA无法打开插件市场的解决
  • 微信小程序 不同角色进入不同页面、呈现不同底部导航栏