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は支援していない。