发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

ScriptCS:将 C#转变为脚本语言

  • 2013-05-02
  • 本文字数:1302 字

    阅读完需:约 4 分钟

ScriptCS 支持开发者使用简单的文本编辑器编写 C#应用,并通过 Roslyn 执行编译,使用 NuGet 进行包管理。

Windows Azure SDK 团队的项目经理 Glenn Block 启动了 ScriptCS 项目,它是一个尝试将 C#变成脚本语言的业余项目。开发者能够利用其 C#知识,使用简单的文本编辑器编写程序,并通过 Roslyn(微软支持“编译器即服务”的 API)完成编译。ScriptCS 使用 NuGet 挖掘包的依赖关系并加载二进制文件。Roslyn 的 r:语法用于添加 GAC 或其他 DLL 引用。

如果一个 hello.csx 文件包含下面这行 C#代码:

复制代码
Console.WriteLine("Hello World!");

那么运行命令“scriptcshello.csx”,会在控制台输出“Hello World!”字符串。

这个例子既不需要命名空间或类定义,也不需要创建项目,不会生成.obj 或.exe 文件。Roslyn 负责编译而 ScriptCS 执行编译结果。

另一个复杂一些的例子是创建一个 Web API 主机:

复制代码
using System;
using System.IO;
usingSystem.Web.Http;
usingSystem.Web.Http.SelfHost;
var address = "http://localhost:8080";
varconf = new HttpSelfHostConfiguration(new Uri(address));
conf.Routes.MapHttpRoute(name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var server = new HttpSelfHostServer(conf);
server.OpenAsync().Wait();
Console.WriteLine("Listening...");
Console.ReadKey();

ScriptCS 提供了插件机制,使用了所谓的“脚本包(script packs)”,Block 解释道:

脚本包能够提供命名空间的导入和引用,以及脚本能够通过 Require API 使用的对象。

脚本包的主要目的是让开发者能够更容易地使用框架编写脚本。

由于脚本包可以通过 NuGet 包安装,因此它们很容易发现和使用。

让ScriptCS 运行在Mono 之上的工作正在进行, 向Roslyn 添加调试功能也在调研之中。 Sublime Text 已经创建了一个用于 ScriptCS 的插件,在简单的编辑器中支持语法高亮。还有一种选择,是通过 Roslyn 针对.csx 文件在 Visual Studio 中生成语法高亮功能。

根据他在 Node.js 方面的经验, Block 列出了将 C#脚本化的优势

  • 没有项目,只有脚本——我热爱 node.js 的原因之一在于不需要创建项目。开发者可以直接进入一个文件夹创建 js 文件,不会感到受束缚。
  • 不需要 IDE,只需要一个文本编辑器。
  • 在程序集之上的包——在 node 中,如果想要获取某些内容,那么只需要使用 npm 来下载包即可。这非常简单。开发者只需要拥有自己的应用和本地 node_modules 文件夹即可。
  • 无需编译——这是个重要因素。在 node 中,开发者只需要运行 node.exe 和自己的程序就能让它运转。开发者无须首先创建可执行文件,只需要直接运行。

借助 Roslyn 和 NuGet,这一切成为了可能。ScriptCS 仍然是处理程序集,但是“不必单独管理它们,只需要安装包即可。”

ScriptCS 采用 Apache 2 许可,它目前并未获取微软的支持。

查看英文原文 ScriptCS: Turning C# into a Scripting Language


感谢臧秀涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-05-02 09:0511167
用户头像

发布了 256 篇内容, 共 67.8 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

春晚回应吉祥物“龙辰辰”被质疑 AI 合成;周星驰 Web3 团队下月上线独立 App 丨 RTE 开发者日报 Vol.102

声网

Default Folder X mac v6.0.3激活版下载

影影绰绰一往直前

如何给网页和代码做HTML加密?

软件测试/人工智能|使用 Pip 管理 Python 包

霍格沃兹测试开发学社

从概念到实践,带你掌握层次递归查询

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

如何构建适合工业设计企业的云端图形工作站?

青椒云云电脑

图形工作站

【写作训练营打卡|04】

当创建statefulset资源后,k8s组件如何协作

华为云开发者联盟

云原生 k8s 华为云 华为云开发者联盟

云电脑和一体机有什么区别?

青椒云云电脑

云电脑 桌面云一体机 云桌面一体机

新一代私有云部署四大优势和案例解读

青椒云云电脑

云电脑平台

Java 11 到 Java 21:无缝迁移的可视化指南

高端章鱼哥

Java Java11 Java21

新动力、新引擎,企业知识大模型释放数字生产力

中关村科金

王炸升级!PartyRock 10分钟构建 AI 应用

伤感汤姆布利柏

人工智能

23年总结-对于开发者来说AI带来的影响和AI未来的趋势预测

肥晨

AI

大模型训练引领AI新时代

百度开发者中心

人工智能 大模型 LLM

每日一题:LeetCode-151. 反转字符串中的单词

半亩房顶

Go 面试 算法 LeetCode 字符串

当前最高4+级!大模型能力获信通院标准符合性验证

中关村科金

大模型 大模型评估

从内容生产到企业经营,大模型将如何改变数字营销?

中关村科金

大数据 大模型 智能营销

教育行业为什么管理特权账号?

尚思卓越

运维 网络安全

学校建设云教室方案应该考虑哪些?

青椒云云电脑

云教室 云教室解决方案

机器学习与低代码开发:创新驱动的双剑合璧

EquatorCoco

机器学习 软件开发 低代码

3DCAT+上汽奥迪:打造新零售汽车配置器实时云渲染解决方案

3DCAT实时渲染

实时云渲染 实时渲染云 汽车虚拟仿真 汽车3D可视化

智能双录解决方案助力保险代销机构探索市场新机遇

中关村科金

保险 智能双录

.NET使用分布式网络爬虫框架DotnetSpider快速开发爬虫功能

不在线第一只蜗牛

.net 分布式 爬虫

大模型训练中CPU高负载与GPU低使用率的优化策略

百度开发者中心

gpu 大模型

大模型训练中错误数据集的影响及应对策略

百度开发者中心

大模型 人工智能’

软件测试/人工智能|一文告诉你Python集合相关知识

霍格沃兹测试开发学社

IPQ4019 IPQ4029 Platform DR40x9 Provide 23-30KM Long Range Transfer AP Controller Support Openwrt Openwifi|802.11AC Solution

wallyslilly

IPQ4019 ipq4029

我还是无法忘记那个午夜,当oncall的告警响起

Java 工程师蔡姬

#on-call 21 天技术人写作行动营 #线上问题 #性能问题

如何教会小白使用淘宝API接口获取商品数据

Noah

软件测试/人工智能|一文告诉你Python字典知识

霍格沃兹测试开发学社

ScriptCS:将C#转变为脚本语言_.NET_Abel Avram_InfoQ精选文章