如何在c#中拥有配置文件的不同部分

本文关键字:同部 配置文件 拥有 | 更新日期: 2023-09-27 18:27:05

我试图为我的App.config文件做的是,我有一堆设置,我想做的是将我的配置文件拆分成不同的文件。例如我的app.config文件文件有与电子邮件相关的设置,所以我想取出这些设置并将其存储在email.config文件中,然后在我的appconfig文件中使用configSource属性从email.configfile添加这些设置,并将其添加到应用设置节点。这可能吗?

如果是,请就如何获得上述结果提出建议。

非常感谢。

例如,我有另一个名为app1.config的配置文件,它有以下xml:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings >
    <add key="l" value="test"/>
  </appSettings>
</configuration>

然后从我的主app.config文件中引用app1.config文件,然后从代码中获取应用程序设置键的值:

 var x = ConfigurationManager.AppSettings["l"];

如何在c#中拥有配置文件的不同部分

编辑以反映更改后的问题和其他评论:

对于配置文件的<appSettings>部分中定义的自定义设置,有一个file属性,它可以包含覆盖appSettings参数的文件的路径:http://www.codeproject.com/Articles/8818/Using-the-File-attribute-of-the-appSettings-elemen

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <appSettings file="settings.config">
 </appSettings>
</configuration>`

您还可以使用configSource属性,如MSDN文档中所指定的:

http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.configsource.aspx

ConfigSource属性表示为与SectionInformation对象关联的ConfigurationSection对象指定的ConfigSource属性的值。

ConfigurationSection实现可以选择指定一个单独的文件,在该文件中定义该部分的配置设置。这在多种方面都很有用:

使用include文件可以为配置文件带来更加逻辑化和模块化的结构。

文件访问安全性和权限可用于限制对配置设置部分的访问。

包含文件中在应用程序初始化期间未使用的设置可以在不需要重新启动应用程序的情况下进行修改和重新加载。

以下示例显示了如何在配置文件中使用此属性来指定在外部包含文件中定义页面部分:

<pages configSource="pages.config"/>

或者,如果您想将同一部分的信息存储在不同的文件中,您可以始终恢复使用ConfigurationManager。打开…配置功能并以程序方式读取设置:http://msdn.microsoft.com/en-us/library/ms134262.aspx

您可以在自己的文件中使用smtp设置的内置配置部分:

<system.net>
    <mailSettings>
      <smtp deliveryMethod="network">
        <network
          host="localhost"
          port="25"
          defaultCredentials="true"
        />
      </smtp>
    </mailSettings>
</system.net>

这可以在使用configSourceapp.config中引用。

如果需要,您可以将其仅限于smtp部分:

<system.net>
    <mailSettings>
      <smtp configSource="smtp.config" />
    </mailSettings>
</system.net>

您可以使用configSource属性:

 <?xml version="1.0" encoding="utf-8" ?>
 <configuration>
 <connectionStrings configSource="cs.config" />
 </configuration>
ConfigSource将整个节映射到一个外部文件。一旦添加了它,就不能再使用根配置文件中的部分了。每个部分也不能有多个映射。

您可以创建一个自定义配置部分,如上所述,其中包含您想要映射的部分&然后依次绘制每个部分。

web.config:

<myConfig>
    <mysection1 file="section1.config"/>
    <mysection2 file="section2.config"/>
</myConfig>

section1.config:

<mysection1>
    <add key="key1" value="val1"/>
</mysection1>