Click here to Skip to main content
15,867,453 members
Articles / Web Development / ASP.NET
Article

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

Rate me:
Please Sign up or sign in to vote.
4.88/5 (32 votes)
18 Nov 20042 min read 159K   39   9
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
<?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:

XML
<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:

XML
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


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
Questionmany websites, one code folder, config file in virtual directory Pin
rhjiv24-Feb-09 14:50
rhjiv24-Feb-09 14:50 
Generalrunning debug mode on web site Pin
littlecanary3-Jul-07 10:03
littlecanary3-Jul-07 10:03 
GeneralReference to another configSections Pin
M_A_MaDeRo11-Jan-07 7:40
M_A_MaDeRo11-Jan-07 7:40 
GeneralUse extension "exclude" in ASP.NET 2.0 Pin
Michael Freidgeim8-Feb-06 17:22
Michael Freidgeim8-Feb-06 17:22 
GeneralPreference Pin
Sara Ramli27-Dec-05 19:44
Sara Ramli27-Dec-05 19:44 
GeneralUse this to switch 'environments' Pin
Ashley van Gerven19-Nov-04 12:05
Ashley van Gerven19-Nov-04 12:05 
QuestionRe: Use this to switch 'environments' [modified] Pin
challengerking11-Jun-06 17:23
challengerking11-Jun-06 17:23 
GeneralShort, sweet and useful. Pin
Dr Herbie18-Nov-04 22:47
Dr Herbie18-Nov-04 22:47 
GeneralAnother method for web applications Pin
fizikci18-Nov-04 20:21
fizikci18-Nov-04 20:21 

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

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