Я сделал небольшой графический интерфейс для администрирования некоторых параметров в файле app.config. GUI выпускается как часть моего продукта, что позволяет изменять значения в файле app.config, не открывая его в текстовом редакторе.
Свойства реализуются в настраиваемом configSection, что делает его строго типизированным в коде. Моя проблема в том, что когда файл app.config обновляется (когда я сохраняю его из GUI), полное имя моей сборки записывается в configSection следующим образом:
<section name="ConfigurationSettings" type="PerformanceDude.MSBuildShellExtension.Common.ConfigurationSettings, Common, Version=2.2.1.0, Culture=neutral, PublicKeyToken=1ab1b15115e63xxx" />
Когда я обновляю эту сборку до нового номера версии, версия сборки кода GUI больше не соответствует ссылкам сборки в app.config.
Вот как я загружаю настройки:
var config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = ConfigFilePath }, ConfigurationUserLevel.None);
var settings = Config.GetSection("ConfigurationSettings") as ConfigurationSettings;
Вот как я сохраняю настройки:
config.Save(ConfigurationSaveMode.Minimal, true);
Я не хочу писать обновление script, изменяя версию каждый раз, когда я обновляю. Кто-нибудь знает отличное решение этой проблемы?