1

サービス担当者が別のプログラムの App.Config のいくつかのエントリを更新するための簡単なツールを作成しようとしています。App.Config ファイルには、プログラムの初期化時に使用されるカスタム パラメーターが含まれています。

App.Config には多くの機密項目が含まれているため、特定のパラメーターのみが変更されるようにするためのツールが必要です。したがって、App.Config を直接編集することを許可しない理由です。

私の質問:

  1. 別のプログラムから App.config の構成セクションから名前と値のペアにアクセスするにはどうすればよいですか?
  2. Winforms と WPF のどちらが UI に適していますか? 将来、より多くのエントリを簡単に追加できるようにするためのコントロールはありますか?
  3. このツールでは、ユーザーが String、int、double、または Boolean のいずれかを設定できるようにする必要があります。

App.Config の構造は次のとおりです。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <configSections>
    <sectionGroup name="Settings">
      <section name="Section1" type="System.Configuration.NameValueSectionHandler"/>
      <section name="Section2" type="System.Configuration.NameValueSectionHandler"/>
      <section name="Section3" type="System.Configuration.NameValueSectionHandler"/>
      <section name="Section4" type="System.Configuration.NameValueSectionHandler"/>
    </sectionGroup>
  </configSections>

  <Settings>
    <Section1>
      <add key="NAME_STRING" value="Some String"/>
    </Section1>

    <Section2>
      <add key="NAME_INTEGER" value="10"/>
    </Section2>

    <Section3>
      <add key="NAME_DOUBLE" value="10.5"/>
    </Section3>

    <Section4>
      <add key="NAME_BOOLEAN" value="true"/>
    </Section4>
  </Settings>

  ... Omitted ...

</configuration>

App.Config 自体を使用するプログラムでは、次のように値を簡単に変更できます。

NameValueCollection nvc = (NameValueCollection)ConfigurationManager.GetSection("Settings/Section1");

App.Config をロードした後、別のプログラムからこれを行う同様の方法はありますか?

4

2 に答える 2

2

An answer to Question 1: An app.config file is an XML file. It might be easiest to load it as an XML document and modify that programmatically, followed by a save, than to use System.Configuration classes.

ETA: I believe it can be done with ConfigurationManager. Look at the OpenMappedExeConfiguration method. There's a good example there.

于 2012-12-12T23:30:45.113 に答える
0

You could treat the app.config file as a normal XML file. Use either XDocument or XmlDocument to load the file.

Then use XPath or Linq to XML to find the name-value pairs.

As for Windows.Forms vs. WPF, its a design decision. Both have good and bad points.

[Update]

If you still want to use System.Configuration, you can use the ConfigurationManager.OpenExeConfiguration to get access to the other program's app.config file. This returns a Configuration object, which has a GetSection method.

于 2012-12-12T23:31:35.570 に答える