When developing a .NET Windows Forms Application we have the choice between those App.config tags to store our configuration values. Which one is better?
<configuration> <!-- Choice 1 --> <appSettings> <add key='RequestTimeoutInMilliseconds' value='10000'/> </appSettings> <!-- Choice 2 --> <configSections> <sectionGroup name='applicationSettings' type='System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5612342342' > <section name='Project1.Properties.Settings' type='System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c5612342342' requirePermission='false' /> </sectionGroup> </configSections> <applicationSettings> <Project1.Properties.Settings> <setting name='TABLEA' serializeAs='String'> <value>TABLEA</value> </setting> </Project1.Properties.Settings> </applicationSettings> </configuration>
The basic
<appSettings>is easier to deal with – just slap in a<add key='....' value='...' />entry and you’re done.The downside is: there’s no type-checking, e.g. you cannot safely assume your number that you wanted to configure there really is a number – someone could put a string into that setting….. you just access it as
ConfigurationManager['(key)']and then it’s up to you to know what you’re dealing with.Also, over time, the
<appSettings>can get rather convoluted and messy, if lots of parts of your app start putting stuff in there (remember the old windows.ini file? :-)).If you can, I would prefer and recommend using your own configuration sections – with .NET 2.0, it’s really become quite easy, That way, you can:
There’s a series of really good articles on you to demystify the .NET 2.0 configuration system on CodeProject:
Unraveling the mysteries of .NET 2.0 configuration
Decoding the mysteries of .NET 2.0 configuration
Cracking the mysteries of .NET 2.0 configuration
Highly recommended! Jon Rista did a great job explaining the configuration system in .NET 2.0.