title: Avoid version specific information in configSection in app.config
body: <p>I have made a small GUI for administration of some settings in an app.config file. The GUI is released as part of my product, making it possible to change values in the app.config file, without opening this in a text editor.</p>
  
  <p>The properties are implemented in a custom configSection, making it strongly typed in the code. My problem is, that when the app.config file is updated (when I save from the GUI), the fully qualified name of my assembly is written in the configSection like this:</p>
  
  <pre><code>&lt;section name="ConfigurationSettings" type="PerformanceDude.MSBuildShellExtension.Common.ConfigurationSettings, Common, Version=2.2.1.0, Culture=neutral, PublicKeyToken=1ab1b15115e63xxx" /&gt;
  </code></pre>
  
  <p>When I upgrade this assembly to a new version number, the GUI code assembly version not longer matches the assembly references in the app.config.</p>
  
  <p>This is how I load the settings:</p>
  
  <pre><code>var config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = ConfigFilePath }, ConfigurationUserLevel.None);
  var settings = Config.GetSection("ConfigurationSettings") as ConfigurationSettings;
  </code></pre>
  
  <p>This is how I save the settings:</p>
  
  <pre><code>config.Save(ConfigurationSaveMode.Minimal, true);
  </code></pre>
  
  <p>I don't want to write an upgrade script changing the version everytime I update. Does anyone know a great solution to this problem?</p>