WindowsフォームC#アプリケーションで構成ファイルを作成する最も簡単な方法


88

私は.NETを初めて使用しましたが、それでも構成ファイルの動作についてこだわりませんでした。

Googleで検索するたびにweb.configに関する結果が表示されますが、Windowsフォームアプリケーションを作成しています。

System.Configuration名前空間を使用する必要があることがわかりましたが、ドキュメントは役に立ちません。

構成ファイルがXYZ.xmlであることをどのように定義しますか?または、構成ファイルの「デフォルト」名はありますか?まだうまく聞き取れません。

また、新しいセクションを定義するにはどうすればよいですか?本当にConfigurationSectionから継承するクラスを作成する必要がありますか?

私はこのようないくつかの値を持つ設定ファイルが欲しいです:

<MyCustomValue>1</MyCustomValue>
<MyCustomPath>C:\Some\Path\Here</MyCustomPath>

それを行う簡単な方法はありますか?単純な構成ファイルの読み書き方法を簡単な方法で説明できますか?


1
.NETのバージョンは何ですか?2.0以降では、設定と呼ばれる非常にかわいい方法があります。
トーマス

1
@セブンそれはタイプミスでしたが、それは「例で説明する」を意味するかもしれません:)
Fabio Gomes

回答:


121

App.Configを使用します。

プロジェクトに新しい項目を追加すると、アプリケーション構成ファイルと呼ばれるものが存在します。それを追加します。

次に、構成/アプリ設定セクションでキーを追加します

お気に入り:

<configuration>
 <appSettings>
  <add key="MyKey" value="false"/>

メンバーにアクセスする

System.Configuration.ConfigurationSettings.AppSettings["MyKey"];

これは.NET 2以降で機能します。


2
実際、v1.0以降のすべてのバージョンの.NETで動作します。.NET 2.0の新しいクラスはConfigurationManagerです。
Mike Dimmick

4
私は個人的に、「アプリケーションプロパティ」の「設定」タブを使用します(フレームワーク2.0以降のみ)。VisualStudioは、コード化された強く型付けされたプロパティを設定に使用するためです。また、実行時に読み取り/書き込み可能な「ユーザー」設定を含めることもできます。
Adrian Clark、

@マイクええ、私はそうだった感じがしました、しかし私はあまり確信がありませんでした。私は1であまり働いていない
quiの

26
ConfigurationSettingsは廃止されていることに注意してくださいSystem.Configuration.ConfigurationManager.AppSettings["MyKey"];
JNF 2014

16
また、メモを使用System.Configuration.ConfigurationManagerするには、プロジェクトへの参照が必要ですSystem.Configuration.dll
dmeglio

66

以前の回答の明確化...

  1. プロジェクトに新しいファイルを追加します([ 追加] →[ 新しい項目][アプリケーション構成ファイル])。

  2. 新しい構成ファイルがソリューションエクスプローラーにApp.Configとして表示されます

  3. 以下をテンプレートとして使用して、設定をこのファイルに追加します

    <configuration>
      <appSettings>
        <add key="setting1" value="key"/>
      </appSettings>
      <connectionStrings>
        <add name="prod" connectionString="YourConnectionString"/>
      </connectionStrings>
    </configuration>
  4. 次のように取得します。

    private void Form1_Load(object sender, EventArgs e)
    {
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
    }
  5. ビルドすると、出力フォルダーには<アセンブリ名> .exe.configというファイルが含まれます。これはApp.Configファイルのコピーになります。このファイルを作成するために、開発者がそれ以上の作業を行う必要はありません。


1
これは私にとって役に立ちました。その他の2つのポイント:新しいファイルをプロジェクトに追加するときに、ダイアログの左側にある[全般]ノードをクリックすると、アプリケーション構成ファイルが見つかりました。コードでConfigurationManagerクラスを使用するには、参照にSystem.Configuration DLLを追加する必要がありました。
ジョンギルマー2017

28

前の回答の迅速な読み取りから、彼らが正しいに見えるが、誰もがそれはまだ使用するVisual Studioの2008年に、新しい構成施設述べたように、それは見ていないのapp.config(YourAppName.exe.configへのコンパイル時にコピーされた)を、ただし、プロパティを設定してそのタイプを指定するUIウィジェットがあります。プロジェクトの「プロパティ」フォルダにあるSettings.settingsをダブルクリックします。

最良の部分は、コードからこのプロパティにアクセスすることがタイプセーフであることです。コンパイラは、プロパティ名のタイプミスのような明らかな間違いを見つけます。例えば、中MyConnectionStringというプロパティのapp.configをのようにアクセスすることになります。

string s = Properties.Settings.Default.MyConnectionString;

これはVS2005で利用可能でした。
Greg D

5
いいですが、それ(プロジェクトのプロパティ|設定)はコンパイルする必要のあるコードを生成します。設定を変更する場合は、新しいバイナリを顧客にリリースする必要があります。
JohnL4 2013年

@ JohnL4これらの設定が「ユーザー」スコープ内にある場合は、プログラムで変更できます。例Settings.Default.Test = "abc"; Settings.Default.Save();
Peet Brits

10

App.configファイルを作成する必要があります(web.configとよく似ています)。

プロジェクトを右クリックして新しい項目を追加し、新しい「アプリケーション構成ファイル」を選択する必要があります。

プロジェクトでSystem.Configurationを使用して追加していることを確認してください。

次に、それに値を追加できます。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="setting1" value="key"/>
  </appSettings>
  <connectionStrings>
    <add name="prod" connectionString="YourConnectionString"/>
  </connectionStrings>
</configuration>

    private void Form1_Load(object sender, EventArgs e)
    {
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
    }

ただのメモ:Microsoftよると、ConfigurationSettingsの代わりにConfigurationManagerを使用する必要があります(備考セクションを参照):

「ConfigurationSettingsクラスは下位互換性のみを提供します。新しいアプリケーションの場合は、代わりにConfigurationManagerクラスまたはWebConfigurationManagerクラスを使用する必要があります。」


非常に役立ちます。Tへの私の問題を解決しました
JCMorris 2014年

Visual Studio 2015の場合:[プロジェクト]> [参照の追加]をクリックします。半分下にスクロールしてSystem.Configurationを見つけます。[OK]をクリックし、Nathanのコメントに従ってコード行を更新します。
Robot70

7

構成ファイルのデフォルト名は[yourexe] .exe.configです。したがって、notepad.exeには、プログラムと同じフォルダーにnotepad.exe.configという名前の構成ファイルがあります。これは、CLRおよびフレームワークのすべての側面の一般的な構成ファイルですが、<appSettings>ノードの下に独自の設定を含めることができます。

<appSettings>要素はとしてアクセスすることができる名前と値のペアのコレクションを作成しますSystem.Configuration.ConfigurationSettings.AppSettings。ただし、変更を構成ファイルに保存する方法はありません。

実装するクラスを作成して構成ファイルの要素に追加することにより、独自のカスタム要素を構成ファイルにIConfigurationSectionHandler追加すること<configSections>もできます。その後、を呼び出すことでアクセスできますConfigurationSettings.GetConfig

.NET 2.0は、System.Configuration.ConfigurationManagerシステムごとのデータのユーザーごとのオーバーライドを使用して、複数のファイルをサポートする新しいクラスを追加します。また、変更された構成を設定ファイルに保存することもできます。

Visual Studioは、というファイルを作成しApp.config、プロジェクトがビルドされると、正しい名前でEXEフォルダーにコピーします。


6

.NETアプリケーションの構成に関する最高の(IMHO)記事は、CodeProjectのUnreveling the Mysteries of .NET 2.0 Configurationです。そして、.NET構成ファイルのセクションに関する次のお気に入りの(短い)記事は、セクションハンドラーの理解-App.configファイルです。


これは、ユーザーが尋ねる最も簡単な方法ではありませんが、.NET 2.0構成の謎を解明することは、本当にすばらしい一連の記事です。
Ricardo Amores、

3

Windowsフォームには、app.configファイルと非常によく似たweb.configファイルがあります。しかし、必要なのはカスタム値なので、設定を使用することをお勧めします。

これを行うには、プロジェクトのプロパティを開き、設定に移動します。設定ファイルが存在しない場合は、作成するためのリンクがあります。次に、そこに表示されるテーブルに設定を追加できます。これにより、適切なXMLと、設定の読み込みと保存に使用できるSettingsクラスの両方が生成されます。

設定クラスはのような名前になりますDefaultNamespace.Properties.Settings。次に、次のようなコードを使用できます。

using DefaultNamespace.Properties;

namespace DefaultNamespace {
    class Class {
        public int LoadMySettingValue() {
            return Settings.Default.MySettingValue;
        }
        public void SaveMySettingValue(int value) {
            Settings.Default.MySettingValue = value;
        }
    }
}

2

app.configを参照する他の回答に同意します。ただし、値をapp.configから直接読み取るのではなく、ユーティリティクラス(AppSettingsは私が使用する名前です)を作成してそれらを読み取り、プロパティとして公開する必要があります。AppSettingsクラスを使用して、app.configの値やアセンブリ(AssemblyVersionおよびAssemblyFileVersion)のアプリケーションバージョン情報など、複数のストアの設定を集約できます。



1

使用する:

System.Configuration.ConfigurationSettings.AppSettings["MyKey"];

AppSettingsは非推奨になり、廃止されたと見なされます(link)。

また、ののappSettingsセクションApp.configファイルは、により置換されているapplicationSettingsのセクション。

他の誰かが述べたように、.NET 2.0の新機能であるSystem.Configuration.ConfigurationManager(link)を使用する必要があります。


ConfigurationSettingsは、AppSettingsではなく非推奨です。
Toby

0

どのバージョンの.NETとVisual Studioを使用していますか?

新しいプロジェクトを作成したとき、ソリューションにapp.configというファイルがあるはずです。これがデフォルトの構成ファイルです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.