CySharpから出ているProcessXが良いらしいぞという噂を聞いたので試してみました。 ProcessXはcmdやPowerShellで実行するコマンドたちをC#から呼びやすくするライブラリのようです。
やってみる
試しにdotnetコマンドを実行してバージョン情報を取得してみます。
using System; using Zx; // dotnet --versionの結果を取得 var version = await "dotnet --version"; Console.WriteLine($"version: {version}"); // stringの配列で取ることもできる var sdks = await Env.runl($"dotnet --list-sdks"); foreach (var sdk in sdks) { Console.WriteLine($"sdk: {sdk}"); }
実行結果
6.0.100-rc.2.21505.57 version: 6.0.100-rc.2.21505.57 3.1.414 [C:\Program Files\dotnet\sdk] 5.0.303 [C:\Program Files\dotnet\sdk] 5.0.401 [C:\Program Files\dotnet\sdk] 5.0.402 [C:\Program Files\dotnet\sdk] 6.0.100-rc.2.21505.57 [C:\Program Files\dotnet\sdk] sdk: 3.1.414 [C:\Program Files\dotnet\sdk] sdk: 5.0.303 [C:\Program Files\dotnet\sdk] sdk: 5.0.401 [C:\Program Files\dotnet\sdk] sdk: 5.0.402 [C:\Program Files\dotnet\sdk] sdk: 6.0.100-rc.2.21505.57 [C:\Program Files\dotnet\sdk]
所感
最近のC#ではnamespaceやMainメソッドを省略した書き方ができるようになったのも相まって、C#でbatやps1ファイルみたいなスクリプトを書いている感が強いです。全体的な見た目もスッキリしていて良いです。
cmdやらPowerShellを使ってお手製のCI/CDスクリプトを作ったりすることがありますが、そういうスクリプトも全部C#でできそうな感じがします。C#が使えるならいつも使っているVisual Studioからデバッグもできて便利ですね。
この書き方、すごい直感的で好きです。google/zxというのがもとになっているみたいですね。
await "dotnet --version";