はじめに
C#er
諸兄は人生の中で一度は、
C#
をインタプリタ言語のように扱えたらどれだけよかったろう...
と考えたことがあるだろう。
それ、できますよってお話。
導入
前提
-
.NET Core 3.x
以上が導入されていることが望ましい- もちろん
C#er
諸兄は問題ないよなぁ?!
- もちろん
-
VSCode
が導入済み かつC#プラグイン
導入済み
dotnet-script のインストール
-
以下のコマンドを実行する
powershelldotnet tool install -g dotnet-script
-
以上、終了
使い方
その1:シェルで使う
サンプルは Powershell
を利用しているが、dotnet
コマンドが使えれば別になんでも良い。
-
以下のコマンドを実行する
powershelldotnet script
-
インタプリタ環境が起動するので、あとはお好みで
powershellConsole.WriteLine("Hello, World!!");
-
ただ表示したいだけなら
Console.WriteLine()
すらいらないpowershell"Hello, World!!"
-
もちろん変数に保存した値の確認も同様に可能
powershellvar msg = "Hello, World!!"; msg
-
.NET
と言えばNuGet
!! もちろん対応powershell#r "nuget: Utf8Json" var json = @"{ ""key"":100 }"; var data = Utf8Json.JsonSerializer.Deserialize<dynamic>(json); data["key"]
その2:VSCode
で使う / 単一ファイル
-
適当なところに
.csx
ファイルを作成して、VSCode
で開くpowershellNew-Item main.csx code ./main.csx
-
とりあえず
Hello, World!!
をするmain.csxConsole.WriteLine("Hello, World!!"); // .csxだと直値を出力とかはできない. 以下はエラーとなるので注意. // "Hello, World!!"
-
実行してみる
powershelldotnet script ./main.csx
-
NuGet
も利用可能main.csx#r "nuget: Utf8Json" var json = @"{ ""key"":100 }"; var data = Utf8Json.JsonSerializer.Deserialize<dynamic>(json); Console.WriteLine(data["key"]);
その3:VSCode
で使う / インテリセンスを効かせる
その2の方法でも十分と言えば十分だけれども、インテリセンスのない C# なんて C# じゃない!!
ということで、インテリセンスを効かせた方法も紹介しておく。
-
適当なところにフォルダを作成して、
C#スクリプトプロジェクト
を作成するpowershellmkdir ./work dotnet script init code .
-
NuGetパッケージ
もVSCode
を開きなおせばインテリセンスが効くように!!main.csx// 以下を追記して、VSCodeで開きなおす #r "nuget: Utf8Json"
もっと詳しく!
公式サイト を読み込むのだ!!
おわりに
私は dotnet-script
は、これでがっつり開発!というよりか、わりと断片的なコードの動作確認のために利用しています。
スクリプト利用するなら F#
の方がかなり優秀だと思います。
ただ、実用に耐えうるレベルのものなのでドンドン使っていってもいいのでは?と思います。
以上、閉廷!!