オンプレ系インフラエンジニアがAzureを勉強する

いつか誰かの何かの役に立つと嬉しいな

.NETコンソールアプリでコマンド実行してみる-その2

はじめに

前回の.NETコンソールアプリをブラッシュアップします。
.NETコンソールアプリでコマンド実行してみる - オンプレ系インフラエンジニアがAzureを勉強する

実行するコマンドを定義ファイルから読み込むようにします。
ビルドした後でも実行するコマンドが変えられるので汎用性が上がるはず。

定義ファイル

config.jsonというファイルを作ります。
JSON形式であればよいです。
デバッグ中はDebugフォルダの配下に、ビルド後はexeファイルと同じ階層に配置します。

{
    "Sample": {
        "Command": "/k dir"
    }
}

追加分コード

「プロセスの起動」の直前に下記コードを追加します。

// 読み込む定義ファイルの指定
const string fileName = "config.json";

// 初期化
IConfigurationRoot config = null;

// builderのセット
ConfigurationBuilder configBuilder = new ConfigurationBuilder();

// 対象の設定ファイルをbuilderに追加
configBuilder.AddJsonFile(fileName);

// キー/値のセット
config = configBuilder.Build();

// configから値の取得
string command = config["Sample:Command"];

コマンドをベタ打ちしていた箇所を変数に置き換えます。

// プロセスの起動
ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", command);

コード内補足

System.AppDomain.CurrentDomain.BaseDirectory
現在のアプリケーションドメインのベースディレクトリを取得するプロパティ
AppDomain.BaseDirectory プロパティ (System) | Microsoft Docs

IConfigurationRoot
キー/値のアプリケーション構成プロパティのセットを表すインターフェース
IConfiguration インターフェイス (Microsoft.Extensions.Configuration) | Microsoft Docs

ConfigurationBuilder
アプリケーションで使用するキー/値ベースの構成設定をキー・バリューの形で参照できるライブラリ
ConfigurationBuilder クラス (Microsoft.Extensions.Configuration) | Microsoft Docs