2009-02-13 2 views
3

Я пытаюсь изменить во время выполнения один ключ моего файла настроек приложений, но он не работает.Как изменить настройки приложения во время работы

я на этом пути:

ConfigurationSettings.AppSettings["XPTO"] = "HELLO"; 

кажется, что это только изменения в памяти, а не на файл.

Кто-нибудь знает, как это сделать?

Спасибо.

ответ

9

Взгляните на мой overview of .NET settings files .. Короче говоря, я думаю, вы хотите настроить пользовательский охват. Он будет вести себя так же, как вы ожидаете.

Edit: Если вы используете settings designer in Visual Studio, то просто измените "Scope" в "Пользователь". Если нет, вы должны иметь возможность делать эквивалент программно.

+2

Обратите внимание: при изменении настроек и сохранении параметры не будут изменены в папке bin, но в [userfolder] \ Local Settings \ Application Data \\ [название компании] \\ [приложение] .exe [хэш-строка ] \\ [версия] \ user.config –

+1

В более поздних версиях Windows он будет изменен на [userfolder] \ AppData \ Local \\ [название компании] \\ [приложение] .exe [строка хэша] \\ [версия ] \ user.config –

+0

@Jader Yep. Я кратко расскажу об этом в своем обзоре и дам программные способы получения полученного пути. Но спасибо за обмен этими деталями. – el2iot2

5

Файл AppSettings не предназначен для записи. Он предназначен для хранения конфигураций, которые не будут меняться во время выполнения, но могут меняться со временем, то есть: строки подключения к БД, URL веб-службы и т. Д.

Так что, хотя может быть возможно обновить файл на самом деле, -asses, если это значение должно храниться там.

5

Если предположить, что приложение имеет разрешения на запись в файл ...



    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // the config that applies to all users 
    AppSettingsSection appSettings = config.AppSettings; 

    if (appSettings.IsReadOnly() == false) 
    { 
     appSettings("Key").Value = "new value"; 

     config.Save(); 
    } 

Я игнорируя все возможные исключения, которые могут быть отброшены ...

+0

Как я могу получить доступ к классу ConfigurationManager. Я пытаюсь использовать эту часть кода, и это приводит к некоторым ошибкам, которые не соответствуют этому классу: S. – rpf

+2

Добавить System.Configuration как ссылку. – Joe