Roslyn for Scripting 触った
Roslyn for Scriptingで、あなたのアプリケーションにもC#スクリプトを!!
こちらのブログを参考に、C# Sciprting を触ってみました。
Visual Studio で適当にコンソールアプリのプロジェクトを用意し、NuGet でインストール。
Install-Package Microsoft.CodeAnalysis.Scripting -Pre
NuGet Gallery | Microsoft.CodeAnalysis.Scripting 1.1.0-rc1-20151109-01
↓のように、"return 1 + 2; "と書いて、戻り値をとってみる。
using Microsoft.CodeAnalysis.CSharp.Scripting; using Microsoft.CodeAnalysis.Scripting; using System; namespace ConsoleApplication11 { class Program { static void Main(string[] args) { string scriptText = "return 1 + 2;"; var script = CSharpScript.Create(scriptText); ScriptState<object> state = script.RunAsync().Result; Console.WriteLine(state.ReturnValue);// 3 } } }
で 3 と出力。
変数の情報がとれそうだったので、↓とかいて…
using Microsoft.CodeAnalysis.CSharp.Scripting; using Microsoft.CodeAnalysis.Scripting; using System; using System.Linq; namespace ConsoleApplication11 { class Program { static void Main(string[] args) { string scriptText = @" int a = 3 * 4; string name = ""ping-pong""; "; var script = CSharpScript.Create(scriptText); ScriptState<object> state = script.RunAsync().Result; foreach(var value in state.Variables) { Console.WriteLine($"name:{value.Name} value:{value.Value} type:{value.Type} "); } } } }
で
name:a value:12 type:System.Int32 name:name value:ping-pong type:System.String
と出力される。