ScriptCSでは、開発者がシンプルなテキストエディタでC#アプリケーションを書くことができるようになる。Roslynでコンパイルされ、NuGetでパッケージ管理される。
Windows Azure SDKチームのプロジェクトマネージャGlenn Block氏は、C#をスクリプト言語にするScriptCSサイドプロジェクトを始めた。開発者はシンプルなテキストエディタを使ってC#の知識を使うことができ、Microsoftのcompiler-as-a-serviceであるRoslynでコンパイルを完了できる。ScriptCSはNuGetを使用して依存するパッケージのアップロードされたバイナリを探す。Roslynのr:シンタックスは、GACや他のDLL参照を追加するために使用される。
hello.csxに以下のC#コードが含まれていたとする
Console.WriteLine("Hello World!");
そして、コマンドscriptcs hello.csxの結果として、コンソールにHello World!という文字列が表示される。
名前空間もクラス定義も必要なく、プロジェクトも.objや.exeファイルの生成もされない。RoslynはコンパイルしてScriptCSの実行結果を返す。
他のより手の込んだ例では、Web APIホストを生成している:
using System;
using System.IO;
using System.Web.Http;
using System.Web.Http.SelfHost;
var address = "http://localhost:8080";
var conf = 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氏の説明によると:
script packは名前空間のインポート、参照だけでなく、Require APIを通じてスクリプトで利用できるオブジェクトを提供します。
script packの主な目的は、編集したスクリプトでフレームワークを容易に使用することができるようにすることです。
script packsはNuGetパッケージを通じてインストールすることができ、それらは簡単に見つけて利用できます。
MonoでScriptCSが実行できるように作業が進行中である。さらにRoslynでのデバッグ機能が検討されている。Sublime Textは、シンプルなエディタでシンタックスのハイライトを有効にするScriptCS用のプラグインを作成している。またVisual Studioで.csxファイルのシンタックスハイライトを生成するためにRoslynを使用することができる。
Block氏は、自身のNode.jsの経験をもとにC#スクリプトの優位性をリストにした:
- プロジェクトが不要でスクリプトのみ- node.jsの好きなことのひとつは、プロジェクトが不要なことである。フォルダにjsファイルを置くだけで始めることができる
- IDEが必要なく、テキストエディタだけでよい
- アセンブリではなくパッケージ– nodeでは、なにかが欲しいときはnpmを使ってパッケージをダウンロードすることができる。これは超シンプルである。あなたのアプリとローカルのnode_modulesフォルダだけで実行できる。
- コンパイル不要– これが一番重要だ。node.exeと私のアプリだけで実行できる。実行ファイルを作成する必要がなく、ただ実行するだけである。
すべてはRoslynとNuGetで可能である。ScriptCSはまだアセンブリを扱うが、“私はそれを個別に管理するのではなく、パッケージのインストールだけにしたい。”
ScriptCSはApache 2ライセンスで提供されており、現在Microsoftは支援していない。