91

私は .NET にまったく慣れていませんが、構成ファイルがどのように機能するかについてまだコツがつかめませんでした。

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

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

構成ファイルが XYZ.xml であることを定義するにはどうすればよいですか? または、構成ファイルの「デフォルト」名がありますか? 私はまだそれを理解していません。

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

次のような値を持つ構成ファイルが必要です。

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

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

4

11 に答える 11

127

App.Configを使用したい。

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

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

好き:

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

次の方法でメンバーにアクセスします

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

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

于 2008-09-22T12:29:32.623 に答える
70

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

  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. ビルドすると、出力フォルダーに <assemblyname>.exe.config というファイルが含まれます。これは、App.Configファイルのコピーになります。このファイルを作成するために、開発者がこれ以上の作業を行う必要はありません。

于 2008-09-22T12:53:48.510 に答える
28

以前の回答を簡単に読むと、それらは正しいように見えますが、Visual Studio 2008 の新しい構成機能について誰も言及していないようです。まだ app.config を使用しています(コンパイル時に YourAppName.exe.config にコピーされます)。ただし、プロパティを設定してそのタイプを指定するための UI ウィジェットがあります。プロジェクトの「Properties」フォルダーにあるSettings.settingsをダブルクリックします。

最良の部分は、コードからこのプロパティにアクセスすることが型安全であることです。コンパイラは、プロパティ名の入力ミスなどの明らかな間違いを検出します。たとえば、app.config の MyConnectionString というプロパティには、次のようにアクセスします。

string s = Properties.Settings.Default.MyConnectionString;
于 2008-09-23T00:56:10.520 に答える
10

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

プロジェクトを右クリックし、新しい項目を追加して、新しい"Application Configuration File"を選択する必要があります。

プロジェクトで 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 クラスを使用する必要があります。"

于 2008-09-22T12:39:17.937 に答える
7

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

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

独自のカスタム要素を構成ファイルに追加することもできます。たとえば、構造化された設定を定義するために、実装するクラスを作成し、IConfigurationSectionHandlerそれを構成ファイルの要素に追加し<configSections>ます。その後、 を呼び出してアクセスできますConfigurationSettings.GetConfig

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

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

于 2008-09-22T12:46:49.713 に答える
6

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

于 2008-09-22T12:30:17.100 に答える
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;
        }
    }
}
于 2008-09-22T12:33:27.187 に答える
2

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

于 2008-09-22T13:17:33.290 に答える
1

使用する:

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

AppSettings は廃止され、廃止されたと見なされています (リンク)。

さらに、app.config の appSettings セクションがapplicationSettingsセクションに置き換えられました。

他の誰かが述べたように、.NET 2.0 の新しいSystem.Configuration.ConfigurationManager (リンク) を使用する必要があります。

于 2008-11-28T15:44:32.440 に答える
0

使用している.NETとVisualStudioのバージョンは何ですか?

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

于 2008-09-22T12:29:29.397 に答える