web-dev-qa-db-ja.com

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

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

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

私が得た答えは "Use App.Config"でした...誰もがこのApp.configとは何か、そして私のコンテキストでそれをどのように使用するかをここに言うことができますか?

150
shyam

最も簡単に言うと、app.configは多くの定義済み構成セクションが利用可能でカスタム構成セクションをサポートするXMLファイルです。 「構成セクション」は、ある種の情報を格納するためのスキーマを持つXMLの断片です。

connectionStringsappSettingsなどの組み込みの設定セクションを使用して設定を設定できます。あなたはあなた自身のカスタム設定セクションを追加することができます。これは高度なトピックですが、厳密に型指定された設定ファイルを構築するのに非常に強力です。

Webアプリケーションには通常web.configがあり、Windows GUI /サービスアプリケーションにはapp.configファイルがあります。

アプリケーションレベルの設定ファイルは、グローバル設定ファイルから設定を継承します。 machine.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ファイルのconnectionStringsセクションを更新する方法については、接続文字列の変更と実行時のapp.configの再ロード を参照してください。

理想的には単純なインストーラーからそのような設定変更を実行するでしょう。

実行時のApp.Configの場所

Q:app.configの<value>を手動で変更して保存してから閉じるとします。 binフォルダに移動して、ここから.exeファイルを起動すると、適用された変更が反映されないのはなぜですか?

A:アプリケーションをコンパイルすると、そのapp.configがbinディレクトリにコピーされます。1 あなたのexeファイルと一致する名前で。たとえば、exeファイルの名前が "test.exe"の場合、binディレクトリに "text.exe.config"があるはずです。再コンパイルせずに設定を変更できますが、元のapp.configではなく、コンパイル時に作成された設定ファイルを編集する必要があります。

1:web.configファイルは移動されず、コンパイル時とデプロイ時に同じ場所に残ります。これに対する1つの例外は、web.configが に変換された場合 です。

.NETコア

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

169
Tim Medora

簡単に言うと、App.configは、アプリケーションレベル設定を保持するXMLベースのファイル形式です。

例:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="key" value="test" />
  </appSettings>
</configuration>

以下のコードスニペットに示すように、 ConfigurationManager を使用して構成にアクセスできます。

var value = System.Configuration.ConfigurationManager.AppSettings["key"];
// value is now "test"

注:ConfigurationSettings は、構成情報を取得するための古い方法です。

var value = System.Configuration.ConfigurationSettings.AppSettings["key"];
37
Furqan Safdar

App.Configは、アプリケーションの設定ファイルとして使用されるXMLファイルです。言い換えれば、コードを変更することなく(そして再コンパイルすることなく)変更したい設定を内部に保存します。接続文字列を格納するためによく使用されます。

その方法については、MSDNのこの記事を参照してください。 http://msdn.Microsoft.com/ja-jp/library/ms254494(v = vs.80).aspx

2
System Down

たとえあなたが知っているとすぐにそれが愚かで明白であるように思われるとしても - 私がすべての答えから逃していた何かを加えるためだけに:

ファイルの名前は "App.config"または "app.config"である必要があり、プロジェクト内の同じ場所に配置できます。 Program.cs。

他の場所が可能であるかどうか、他の名前(ODP.netのドキュメントで提案されているapplication.confのような)が私にはうまくいかなかったかどうかわかりません。

PS。私はVisual Studio Codeから始めて、 "dotnet new"で新しいプロジェクトを作りました。この場合、設定ファイルは作成されません。他のケースもあると思います。 PPS .NET COREの場合は、「dotnet add package System.Configuration.ConfigurationManager --version 4.5.0」のようになります。

1
Dantel35

以下を使用して、App.Configのキーにアクセスできます。

ConfigurationSettings.AppSettings["KeyName"]

このスレッド を見てください

0
CloudyMarble