Давно не писал, действительно интересно получилось.
Имеет WebForms приложение (да, их до сих пор приходится писать иногда).
Как дебажим приложение в Visual Studio, то она, как известно, создает специальную сборку в каталоге Debug. Обычно там что-то вроде такого, если не подключаем дополнительные библиотеки:
.exe - название экзешника
.pdb - информация для дебагинга
.exe.config - конфигурационный файл
.vshost.exe - запущенная VS копия .exe
.vshost.exe.сonfig - конфиг от .vshost.exe
.vshost.exe.manifest - ???
Прикол в том, что при работе с файлом конфигурации через ConfigurationManager, читать-то он читает, но просто так не пишет. Плюс к этому, если вносить изменения в конфиг по имени сборки, то изменения идут в.vshost.exe.сonfig.
Такое поведение приводит к тому, что после пересборки, снова встает копия файла.exe.config и, соответсвенно, настройки не применяются.
Выход: работать только с.exe.config
Первый метод читает, второй пишет :)
Имеет WebForms приложение (да, их до сих пор приходится писать иногда).
Как дебажим приложение в Visual Studio, то она, как известно, создает специальную сборку в каталоге Debug. Обычно там что-то вроде такого, если не подключаем дополнительные библиотеки:
Прикол в том, что при работе с файлом конфигурации через ConfigurationManager, читать-то он читает, но просто так не пишет. Плюс к этому, если вносить изменения в конфиг по имени сборки, то изменения идут в
Такое поведение приводит к тому, что после пересборки, снова встает копия файла
Выход: работать только с
private static string GetSetting(string key) { Configuration cfg = ConfigurationManager.
OpenExeConfiguration(Assembly.GetExecutingAssembly().Location); AppSettingsSection appSettings =
(AppSettingsSection)cfg.GetSection("appSettings"); return appSettings.Settings[key].Value; }
private static void SetSetting(string key, string value) { Configuration configuration = ConfigurationManager.
OpenExeConfiguration(Assembly.GetExecutingAssembly().Location); configuration.AppSettings.Settings[key].Value = value; configuration.Save(); ConfigurationManager.RefreshSection("appSettings"); }
Первый метод читает, второй пишет :)