ScriptCS:將C#轉變為腳本語言

jopen 11年前發布 | 9K 次閱讀 C#

  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許可,它目前并未獲取微軟的支持。

來自: InfoQ
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!