推荐一个强大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

- End -

推荐阅读

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

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

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

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

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

cs-script:一个非常成熟的C#脚本开源引擎的更多相关文章

  1. 利用Roslyn构建一个简单的C#交互脚本引擎

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 微软的下一代编译器技术Roslyn是一个里程碑的技术,可以给.NET平台带来无限想象空间.比 ...

  2. MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具

    这里向大家介绍一个新的生成T-SQL脚本的SQL Server命令行工具:mssql-scripter.它支持在SQL Server.Azure SQL DB以及Azure SQL DW中为数据库生成 ...

  3. 分享一个php的启动关闭脚本(原)

    自己简单写的一个php服务的启动脚本和大家分享 思路(实现的原理): 1:function模块+case语句多分支判断 2:通过添加# chkconfig: 2345 43 89注释实现开机自启动(前 ...

  4. 使用Notepad++开发C#,一个复杂点的csscript脚本

    使用Notepad++开发C#,一个复杂点的csscript脚本: //css_dir ..\..\lib; //css_ref Geb.Image.dll; //css_ref Geb.Image. ...

  5. 一个很不错的bash脚本编写教程

    转自 http://blog.chinaunix.net/uid-20328094-id-95121.html 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本 Lin ...

  6. Script:SQL调优健康检查脚本

    Script:SQL调优健康检查脚本 http://www.askmaclean.com/archives/sql-tuning-health-check-script.html 以下脚本可以用于收集 ...

  7. 如何实现shell并发 一个入门级可控多线程shell脚本方案

     如何实现shell并发      很多人都问我如何写shell脚本,如何实现同时给三台ftp服务器上传文件,如何同时检测三台服务器是否alive等,其实这就是想实现shell的并发.那么shell并 ...

  8. Shell:如何写一个多选菜单的脚本

    Blog:博客园 个人 翻译自How to Create a Multiple Choice Menu in Bash Scripts 目录 多选菜单脚本介绍 配置输入提示 创建预定选项列表 创建预选 ...

  9. Roslyn(CSharpScript).Net脚本编译引擎使用过程内存增涨与稳定的方式

    目       录 1.      引用程序集... 1 2.      内存增涨的情况... 2 3.      内存稳定的情况... 4 1.   引用程序集 Roslyn 是微软公司开源的 .N ...

  10. 我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain 用于 热更新

    大家好,  我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain  用于 热更新 . 简单的说, 原理就是 类似 Asp.net 那样 让 当前 WebApp 运行在一个 A ...

随机推荐

  1. iOS比较枚举NSOrderedSame NSOrderedAscending NSOrderedDescending使用小结

    项目开发中偶然间看到这种比较枚举,之前没注意过,仔细研究了一下结果还挺有意思,我们可以用升降序相等来帮助理解比较结果. NSString 两个字符串的比较,用 a compare:b 来比,得出的结果 ...

  2. sqlSugar 使用原生模式链接数据库

    using System.Reflection; using zhulongxu_webapi_pro.Tools; namespace zhulongxu_webapi_pro.Services { ...

  3. 34.vue响应式

    响应式就是 数据发生变化,ui界面自动更新内容 : vue响应式的实现是在 创建vue实例的时候,遍历data数据,通过 Object.defineProperty给每个数据添加 getter 和 s ...

  4. 从Windows 11 23H2升级至24H2后,Git操作提示文件所有权错误的3种有效解决方案

    从Windows 11 23H2升级至24H2后,Git操作提示文件所有权错误的3种有效解决方案 在升级至 Windows 11 24H2 后,使用 git add 等命令时,可能会遇到如下错误提示: ...

  5. 云原生周刊:ingress2gateway 发布 | 2023.10.30

    开源项目推荐 m9sweeper m9sweeper 是一个免费且简单的 Kubernetes 安全平台.它将行业标准的开源实用程序集成到一站式 Kubernetes 安全工具中,该工具可以帮助大多数 ...

  6. Angular 19 "要" 来了⚡

    前言 Angular 19 预计会在 11 月中旬发布,目前 (2024-10-27) 最新版本是 v19.0.0-next.11. 这次 v19 的改动可不小哦,新增了很多功能,甚至连 effect ...

  7. .NET 实现的零部件离散型 MES+WMS 系统

    前言 随着制造业的不断发展,企业对于生产效率和管理水平的要求越来越高. EasyMES 是一款基于 .NET 6 开发的零部件离散型 MES(Manufacturing Execution Syste ...

  8. 使用FastAPI整合Gradio和Django

    大家好,我是每天分享AI应用的萤火君! 经常接触机器学习的同学可能都接触过Gradio这个框架,Gradio是一个基于Python的专门为机器学习项目创建的快速开发框架,可以让开发者快速发布自己的模型 ...

  9. winform 音乐播放器

    引言 本次项目目的主要为了熟悉axWindowsMediaPlayer,treeview等控件使用,以及学习I/O操作. 技术栈 C# winform 实现效果 设计与实现 使用TreeView实现音 ...

  10. 2.7 使用LiveCD从光盘直接运行Linux,无需安装

    Linux 世界中一个相对较新的现象是可引导的 Linux CD 发行版的出现.它无需安装就可以看到 Linux 系统是什么样的. 多数现代 PC 都能从 CD 启动,而不是必须从标准硬盘启动.基于这 ...