我正在尝试为服务人员创建一个简单的工具来更新其他程序的App.Config中的一些条目。 App.Config文件包含初始化程序时使用的自定义参数。
由于App.Config包含许多敏感项,因此需要一个工具来确保只更改某些参数。因此,不允许他们直接编辑App.Config的原因。
我的问题:
以下是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后,是否有类似的方法从单独的程序执行此操作?
答案 0 :(得分:2)
对问题1的回答:app.config文件是一个XML文件。最简单的方法是将其作为XML文档加载并以编程方式进行修改,然后进行保存,而不是使用System.Configuration
类。
ETA:我相信可以使用ConfigurationManager
完成。查看OpenMappedExeConfiguration方法。那里有一个很好的例子。
答案 1 :(得分:0)
您可以将app.config文件视为普通的XML文件。使用XDocument或XmlDocument加载文件。
然后使用XPath或Linq to XML查找名称 - 值对。
至于Windows.Forms与WPF,它是一个设计决定。两者都有好处和坏点。
<强> [更新] 强>
如果您仍想使用System.Configuration,则可以使用ConfigurationManager.OpenExeConfiguration
访问其他程序的app.config文件。这将返回Configuration
对象,该对象具有GetSection
方法。