15

Is there a way to have the main .net configuration file app.config/web.config include another configuration file? I have a need to keep things in separate files, but link them together.

Here is a sample of what I want to include:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="LocationSearch.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <applicationSettings>
    <LocationSearch.Properties.Settings>
        <setting name="MapQuestApiKey" serializeAs="String">
        <value>some value here...</value>
        </setting>
        <setting name="MapQuestClientCode" serializeAs="String">
        <value>another value here...</value>
        </setting>
    </LocationSearch.Properties.Settings>
  </applicationSettings>
</configuration>
Paul Fryer
  • 9,268
  • 14
  • 61
  • 93

3 Answers3

12

Yes, with the 'file' attribute

<appSettings file="configFiles/otherConfigFile.config">

MSDN info

Some relevant information from the MSDN article about using the 'file' attribute:

The contents of the separate file are merged with the appSettings section in the Web.config file. This functionality is limited to the appSettings attribute.

Note: In the .NET Framework version 2.0, you can now include configuration settings in a separate file for all configuration elements that support the configSource attribute. However, when you use the configSource attribute, you must move the entire section to the separate file because there is no merging of element settings.

Community
  • 1
  • 1
Jim Ecker
  • 407
  • 6
  • 6
9

Yep, you can include separate files into the main .config using the configSource attribute like so:

<securityConfiguration configSource="SomeOtherConfigFile.config" />

External config files that you include this way must be within the same directory (or a subfolder) of the main .config file.

SectionInformation.ConfigSource Property

Kevin Tighe
  • 20,181
  • 4
  • 35
  • 36
  • Nice! Any specific reason the element is called "securityConfiguration" ?? I guess I would expect something like " – Paul Fryer Sep 03 '10 at 17:41
  • You can use the configSource attribute with any configuration section I believe. I just used securityConfiguration as an example because it was in a config file I had handy :) – Kevin Tighe Sep 03 '10 at 17:43
  • Sounds like you can just add the "configSource" attribute to any element and it will inject whatever is in the linked file, correct? – Paul Fryer Sep 03 '10 at 17:50
  • 2
    I believe you can only use the configSource attribute with a ConfigurationSection, like appSettings, securityConfiguration, etc. – Kevin Tighe Sep 03 '10 at 19:50
1

Yes, I do this for URL rewriting rules.

So in my web.config I do this:

<urlrewritingnet configSource="UrlRewriting.config" />
Dustin Laine
  • 37,935
  • 10
  • 86
  • 125