1

我正在尝试为服务人员创建一个简单的工具来更新不同程序的 App.Config 中的一些条目。App.Config 文件包含在我们的程序初始化时使用的自定义参数。

由于 App.Config 包含许多敏感项目,因此需要一个工具来确保仅更改某些参数。因此,不允许他们直接编辑 App.Config 的原因。

我的问题:

  1. 如何从单独的程序中访问 App.config 的配置部分的名称-值对?
  2. 哪个更适合 UI:Winforms 还是 WPF?他们的控件是否可以在将来轻松添加更多条目?
  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

问题 1 的答案:app.config 文件是一个 XML 文件。将其作为 XML 文档加载并以编程方式对其进行修改,然后保存,这可能比使用System.Configuration类更容易。

ETA:我相信它可以用ConfigurationManager. 查看OpenMappedExeConfiguration方法。那里有一个很好的例子。

于 2012-12-12T23:30:45.113 回答
0

您可以将 app.config 文件视为普通的 XML 文件。使用 XDocument 或 XmlDocument 加载文件。

然后使用 XPath 或 Linq to XML 查找名称-值对。

至于 Windows.Forms 与 WPF,这是一个设计决定。两者都有优点和缺点。

[更新]

如果您仍想使用 System.Configuration,您可以使用ConfigurationManager.OpenExeConfiguration来访问其他程序的 app.config 文件。这将返回一个Configuration具有GetSection方法的对象。

于 2012-12-12T23:31:35.570 回答