これは、Visual Basic Advent Calendar 2013 12/9日の記事。
今回は、導入方法および実際に簡単なプログラムを組んでみたいと思います。
Visual Studio 2013 Express 2013 for Desktop を使用しています。
取りあえずのサンプルとして、新規プロジェクトをプロジェク名「RoslynTest」としてコンソール版を作成します。
■Roslynパッケージの導入
Roslynの安定版パッケージを導入するには、NuGetを使うのが簡単でいいです。
[ツール]→[ライブラリ パッケージマネージャー]→[ソリューション NuGetパッケージの管理]を選択すると下記の画面が表示されるので検索で”Roslyn”を入力します。Roslynで複数抽出されてきますが、「Roslyn」のみ選択すれば他のものも一緒に含まれて取得されます。
参照設定として、下記のオブジェクトが自動的に設定されます。
Roslyn.Compilers
Roslyn.Compilers.CSharp
Roslyn.Compilers.VisualBasic
Roslyn.Services
Roslyn.Services.CSharp
Roslyn.Services.VisualBasic
Roslyn.Services.Utilities
今回サンプルとして、文字列変数にVisual Basicのソースコードを埋め込んでコンソール画面に出力してみます。
Imports System.Text
Imports Roslyn.Compilers
Imports Roslyn.Compilers.VisualBasic
Imports Roslyn.Scripting
Imports Roslyn.Scripting.VisualBasic
Module Module1
Sub Main()
Dim engine As ScriptEngine = New ScriptEngine()
Dim session = engine.CreateSession()
Dim srcCode As String =
"Dim str As String = ""using Visual Basic!""" & vbNewLine &
"System.Console.WriteLine(""Hello World "" & str)"
session.Execute(srcCode)
Console.ReadLine()
End Sub
End Module
これを実行すると、文字列変数のソースコードがコンパイルされコンソール画面に”Hello World using Visual Basic!”と表示されます。
次回はRoslynの機能としてコード解析をしてみます。
追記
ゲームスクリプトとして「Lua」が多様されているようだけど、わざわざ「Lua」のような異なる言語を使う必要は無く、ゲームスクリプトでも素直にゲームを作成した言語のまま.NET(Visual Basic、C#)で組める方がいいでしょう。Roslynを使うことでそれが可能になります。
また、コルーチンのyieldも実装済みですから、ゲームスクリプトにはもってこいです。
ScriptCS: C#をスクリプト言語にする
現在、WHSやPowerShellを使っているスクリプトも、ScriptCSを使用してC#に置き換わる時代も来るかも知れませんね。