C#.NETのApp.configとは何ですか?どうやって使うの?

C#.NETで、データベースファイルがExcelワークブックのプロジェクトを行いました。接続文字列の場所がハードコードされているので、私のシステムではインストールに問題はありませんが、他のシステムでは問題があります。

アプリケーションのセットアップが完了した後に、ユーザーにパスの設定を促す方法はありますか?

私が得た答えは、"Use App.Config"でした。誰か、このApp.configとは何か、そして私の文脈でどのように使用するかを教えてくれませんか?

app.configは、簡単に言えば、多くの定義済みの設定セクションが用意されたXMLファイルで、カスタム設定セクションもサポートされています。設定セクションとは、ある種の情報を格納するためのスキーマを持つXMLの断片のことです。

  • 概要 (MSDN)]1.
  • 接続文字列の構成(MSDN)]2.

設定は、connectionStringsappSettingsなどの組み込みの構成セクションを使って構成することができます。独自のカスタム構成セクションを追加することもできます。これは高度なトピックですが、強力な型付けの構成ファイルを構築するには非常に強力です。

Webアプリケーションは一般的にweb.configを持ち、WindowsのGUI/サービスアプリケーションはapp.configファイルを持ちます。

アプリケーションレベルのコンフィグファイルは、グローバルコンフィグファイル(例:machine.config)の設定を継承します。

App.Configからの読み込み

接続文字列には、事前に定義されたスキーマがあり、それを使用することができます。この小さなスニペットは、実際に有効なapp.config(またはweb.config)ファイルであることに注意してください。

<?xml version="1.0"?>




app.config を定義したら、ConfigurationManager クラスを使用してコードから読み取ることができます。冗長なMSDNの例に脅かされることなく、実際にはとても簡単です。

string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;

App.Configへの書き込み

通常、*.configファイルを頻繁に変更することは良いことではありませんが、1回だけの設定を行いたいようですね。

https://stackoverflow.com/q/502411/453277 を参照してください。ここでは、実行時に *.config ファイルの connectionStrings セクションを更新する方法を説明しています。

なお、理想的にはこのような設定変更はシンプルなインストーラーから行うことをお勧めします。

実行時のApp.Configの位置

*Q:例えば、app.configの中の``を手動で変更し、保存してから閉じたとします。このとき、binフォルダに移動して、ここから.exeファイルを起動すると、なぜ適用した変更が反映されないのでしょうか?

A:A**: アプリケーションをコンパイルすると、そのアプリケーションのapp.configがbinディレクトリ1にコピーされ、exeファイルと同じ名前になります。例えば、exeの名前が"test.exe"であれば、binディレクトリには"text.exe.config"が存在するはずです。再コンパイルせずに設定を変更することは可能ですが、オリジナルのapp.configではなく、コンパイル時に作成された設定ファイルを編集する必要があります。

1: web.configファイルは移動せず、コンパイル時とデプロイ時に同じ場所に置かれることに注意してください。例外として、web.configがtransformedの場合があります。

.NETコア

.NET Coreでは、新しい設定オプションが導入されました。*.configファイルの動作方法は変わっていないようですが、開発者はより柔軟な新しい設定パラダイムを自由に選択することができます。

  • ASP.NET Coreにおける構成]5
  • エッセンシャル.NET - .NET Coreにおける構成]6を参照してください。
解説 (2)

App.Configは、アプリケーションの設定ファイルとして使用されるXMLファイルです。つまり、コードを変更せずに(再コンパイルせずに)変更したい設定をこのファイルに格納します。接続文字列の保存にもよく使われます。

その方法については、このMSDNの記事を参照してください。

解説 (0)

App.Config**のキーには、以下の方法でアクセスできます。

ConfigurationSettings.AppSettings["KeyName"]

このスレッド]1を参照してください。

解説 (1)