最も単純な app.config は、多数の定義済み構成セクションが利用可能で、カスタム構成セクションをサポートする XML ファイルです。「構成セクション」は、ある種の情報を格納するためのスキーマを持つ XML のスニペットです。
connectionStrings
設定は、やなどの組み込みの構成セクションを使用して構成できますappSettings
。独自のカスタム構成セクションを追加できます。これは高度なトピックですが、厳密に型指定された構成ファイルを作成するには非常に強力です。
通常、Web アプリケーションには web.config ファイルがあり、Windows GUI/サービス アプリケーションには app.config ファイルがあります。
アプリケーション レベルの構成ファイルは、machine.config などのグローバル構成ファイルから設定を継承します。Web アプリケーションも applicationHost.config から設定を継承します。
App.Config からの読み取り
接続文字列には、使用できる定義済みのスキーマがあります。この小さなスニペットは、実際には有効な app.config (または web.config) ファイルであることに注意してください。
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="MyKey"
connectionString="Data Source=localhost;Initial Catalog=ABC;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
app.config を定義したら、ConfigurationManagerクラスを使用してコードで読み取ることができます。冗長な MSDN の例に惑わされないでください。それは実際には非常に簡単です。
string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;
App.Config への書き込み
*.config ファイルを頻繁に変更することは、通常は良い考えではありませんが、一度だけセットアップを実行したいように思えます。
参照:実行時に *.config ファイルのセクションを更新する方法について説明している「実行時に接続文字列を変更し、app.config をリロードする」を参照してください。connectionStrings
理想的には、単純なインストーラーからこのような構成変更を実行することに注意してください。
実行時の App.Config の場所
Q : app.config の一部を手動で変更<value>
し、保存してから閉じたとします。bin フォルダーに移動して、ここから .exe ファイルを起動すると、適用された変更が反映されないのはなぜですか?
A : アプリケーションをコンパイルすると、その app.config が、exe ファイルと一致する名前でbin ディレクトリ1にコピーされます。たとえば、exe の名前が「test.exe」の場合、bin ディレクトリに「text.exe.config」が存在するはずです。再コンパイルせずに構成を変更できますが、元の app.config ではなく、コンパイル時に作成された構成ファイルを編集する必要があります。
1: web.config ファイルは移動されず、コンパイル時とデプロイ時に同じ場所にとどまることに注意してください。これに対する 1 つの例外は、web.config が変換される場合です。
.NET コア
新しい構成オプションが .NET Core で導入され、統合された .NET (バージョン 5 以降) で継続されます。*.config ファイルの動作は根本的に変わっていませんが、開発者はより柔軟な新しい構成パラダイムを自由に選択できます。
.NET Framework 構成と同様に、.NET Core は非常に複雑になる可能性がありますが、実装は数行の構成とそれを読み取るための数行の c# と同じくらい単純です。