Click here to Skip to main content
Licence 
First Posted 18 Nov 2004
Views 78,456
Bookmarked 37 times

Using the File attribute of the appSettings element of a .NET config file

By | 18 Nov 2004 | Article
Easily share configuation settings with the appSettings element File attribute.

Introduction

If you need to share configuration settings among multiple .NET assemblies, the practice of maintaining separate config files for each assembly can quickly become tedious. For instance, if you have multiple executables within a directory that all need a 'ConnectionString' entry in their config file, the traditional method in .NET would be for each executable to have its own config file. This can become a burden in an enterprise environment when you need to change the connection string, as you would be forced to change each individual config file. Fortunately, there is a better approach. This better approach involves using the File attribute of the .NET config file's appSettings element. This attribute should contain the relative path to a custom config file, which all other applications can share. The description from MSDN on the appSettings File attribute follows:

Specifies a relative path to an external file containing custom application configuration settings. The specified file contains the same kind of settings that are specified in the <add>, <remove>, and <clear> elements and uses the same key/value pair format as those elements. The path specified is relative to the main configuration file. For a Windows Forms application, this would be the binary folder (such as /bin/debug), not the location of the application configuration file. For Web Forms applications, the path is relative to the application root, where the web.config file is located.

Note that the runtime ignores the attribute if the specified file can not be found.

Essentially, each executable's config file will contain an entry such as:

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

where "settings.config" is a custom config file which looks something like this:

<appSettings>
 <add key="Setting1" value="This is Setting 1 from settings.config" />
 <add key="Setting2" value="This is Setting 2 from settings.config" />
 <add key="ConnectionString" value="ConnectString from settings.confg" />
</appSettings>

When you run your application, you simply use the AppSettings property from System.Configuration.ConfigurationSettings to reference the configuration setting, such as:

Dim s As String = _
   System.Configuration.ConfigurationSettings.AppSettings("ConnectionString")

In this case, if there is a 'ConnectionString' key in the individual config file, that value will be used. Otherwise, the value will be retrieved from the shared "settings.config" file.

As indicated above, if you choose, each individual config file can also define the keys which are present in the shared config file. In that case, the individual config file settings will take precedence over the shared config file. That could be useful in a situation where you want to quickly test a new setting without disrupting the other applications which are using the shared config file.

Hopefully, this article has shed some light on the sometimes confusing world of .NET configuration files. I hope many of you find this method useful when dealing with multiple configuration files. Good luck.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Scott Bradley



United States United States

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
Questionmany websites, one code folder, config file in virtual directory Pinmemberrhjiv14:50 24 Feb '09  
Generalrunning debug mode on web site Pinmemberlittlecanary10:03 3 Jul '07  
GeneralReference to another configSections PinmemberM_A_MaDeRo7:40 11 Jan '07  
Anyone knows about how to do the same but to other config sections.
 
For example:

or

 
There are a lot of things that change in those files, but a lot more than stays just the same btw development and production, so something like that would be really helpful. Anyway appSettings is just an easy way of configuration and really limited (key/value only), but for serius configurations you need other configSections.
GeneralUse extension "exclude" in ASP.NET 2.0 PinmemberMichael Freidgeim17:22 8 Feb '06  
GeneralPreference PinmemberSara Ramli19:44 27 Dec '05  
GeneralUse this to switch 'environments' PinmemberAshley van Gerven12:05 19 Nov '04  
QuestionRe: Use this to switch 'environments' [modified] Pinmemberchallengerking17:23 11 Jun '06  
GeneralShort, sweet and useful. PinmemberDr Herbie22:47 18 Nov '04  
GeneralAnother method for web applications Pinmemberbkeskin20:21 18 Nov '04  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web04 | 2.5.120529.1 | Last Updated 18 Nov 2004
Article Copyright 2004 by Scott Bradley
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid