• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

投递人 itwriter 发布于 2013-05-03 10:01 评论(11) 有1207人阅读  »

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

  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许可,它目前并未获取微软的支持。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【转】C++虚函数&纯虚函数&抽象类&接口&虚基类 ...发布时间:2022-07-14
下一篇:
c++publicprivateprotect发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap