appsettings.json の参照ファイルをデバッグ、リリースで切り替える方法を紹介します。
Windows Form アプリケーション、コンソールアプリケーションで、appsettings.json を切り替える例を紹介します。
今回はWindows Formアプリケーションを例にします。
Windows Formアプリケーション、コンソールアプリケーションでは、ConfigurationBuilder オブジェクトのAddJsonFile() メソッドで読み込むJSONファイルを指定します。
そのため、リリース時とデバッグ時で処理を切り替え、読み込ませるファイルを変更することで、切り替えを実現します。
リリース、デバッグでのコードの切り替えは、#if
#endif
#else
などのC# プリプロセッサ ディレクティブを利用します。
appsettings.json ファイルとデバッグ時用のappsettings_debug.json ファイルを準備します。
{
"WinFormTestValues": {
"Key": "(リリース版)キーの値です。"
}
}
{
"WinFormTestValues": {
"Key": "(デバッグ版)キーの値です。"
}
}
appsettings.json, appsettings_debug.json ファイルの[出力ディレクトリにコピー]のプロパティを変更して、
ビルド時に出力ディレクトリにファイルがコピーされるようにします。
下図のフォームを作成します。ボタンと複数行のテキストボックスを配置します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Extensions.Configuration;
namespace AppSettingsChangeWinForm
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ConfigurationBuilder cfb = new ConfigurationBuilder();
cfb.SetBasePath(System.IO.Directory.GetCurrentDirectory());
#if DEBUG
cfb.AddJsonFile("appsettings_debug.json", true, true);
#else
cfb.AddJsonFile("appsettings.json", true, true);
#endif
IConfiguration configuration = cfb.Build();
IConfigurationSection section = configuration.GetSection("WinFormTestValues");
string str = section["key"];
textBox1.Text += str + "\r\n";
}
}
}
appsettings.json ファイルの読み取りに関してはこちらの記事を参照してください。
下記のコードがデバッグ時と、リリース時の切り替え部分になります。#if DEBUG
ブロックがデバッグビルド時にコンパイルされるコードになり、
#else
ブロックがリリース時にコンパイルされるコードになります。AddSonFile()
メソッドに与えるJSONファイル名をデバッグ時とリリース時で変えることで、
JSONファイルの切り替えを実現しています。
#if DEBUG
cfb.AddJsonFile("appsettings_debug.json", true, true);
#else
cfb.AddJsonFile("appsettings.json", true, true);
#endif
なお、ビルド構成を"Degug"に設定すると #if DEBUG のブロックのコードがカラーリングされ、#elseブロックのコードは灰色で表示されます。
ビルド構成を"Relesase"に設定すると #if DEBUG のブロックのコードがグレーの文字表示になり、#elseブロックのコードがカラーリング表示になります。
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]ボタンをクリックします。デバッグで実行している場合には、下図の「(デバッグ版)キーの値です。」のメッセージが表示されます。
リリースで実行している場合には、下図の「(リリース版)キーの値です。」のメッセージが表示されます。