C#にはスクリプトとして実行出来る機能があります。
csi
コマンドを使用することでC#のスクリプトファイルである.csxファイルを実行出来ます。
冷静に考えると当たり前なことですが、私はハマったので備忘録に残します。
スクリプトの最後はvoid
かint
を返しましょう。
int
を返す場合は終了コードとして認識します。
当たり前ですね。
// SampleScript.csx using System; public static class Script { public static string Run() { // 例として現在時間を返すスクリプトを作成する var now = DateTime.Now; return now.ToString("yyyy-MM-dd HH:mm:ss"); } } // csiから実行すると"string"を"int"に変換出来ないよエラー(CS0029)が出る // return Script.Run(); // デバッグでcsiから実行するときは以下のようなConsole.WriteLineするコードを書く #region DEBUG var ret = Script.Run(); Console.WriteLine($"return value: {ret}"); return 0; #endregion
Microsoft.CodeAnalysis.CSharp.Scripting
というNugetパッケージを追加するとC#コード上でC#スクリプトを実行出来るようになります。
上記パッケージのCSharpScript
クラスで実行する場合はコメントアウトしたreturn Script.Run();
で結果を受け取ることが出来ます。
ですが、csi
コマンドから実行する場合はMainメソッド同様、終了コードが必要なので気をつけましょう。(戒め)