miso_soup3 Blog

主に ASP.NET 関連について書いています。

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

と出力される。