WPF: Изменение пользовательских настроек файла конфигурации во время выполнения? - PullRequest
3 голосов
/ 16 марта 2010

Я пытаюсь изменить некоторые значения пользовательских настроек конфигурационного файла в моем приложении WPF, но это работает только частично.Значение изменяется правильно, и программа работает нормально со значением.Я даже могу перезапустить программу, и значение все равно то, на которое я ее изменил.Проблема заключается в том, что когда я открываю файл .exe.config, значение остается прежним.Я использую этот код для изменения значения:

Properties.Settings.Default.ProjectNumber = varTestExample;
Properties.Settings.Default.Save();

Где этот код сохранения сохраняет изменения и как / где программа считывает значение после того, как я запустил этот код?Если я запускаю чистую версию программы, то значение ProjectNumber правильно берется из файла .exe.config, и если я изменяю значение в файле конфигурации, оно также изменяется при запуске программы.Но как только я запускаю приведенный выше код, программа не читает значение из файла конфигурации.Почему?

Ответы [ 3 ]

8 голосов
/ 16 марта 2010

Настройки сохраняются для каждого пользователя. Вы должны заглянуть в папку Application Data в C:\Documents and Settings\[UserName]\... (WinXP) или в C:\Users\... (Vista / 7).

Без сохранения каких-либо настроек программа использует конфигурацию по умолчанию, которая является вашим *.exe.config файлом. Но как только вы сохраняете изменения, создается файл пользовательских настроек, который загружает этот файл при следующем запуске. Я думаю, это должно объяснить ваше поведение.

2 голосов
/ 16 марта 2010

Свойства.Настройки относятся только к пользовательским настройкам, настройки приложения - это совершенно отдельный набор настроек, которые будут перезаписаны при использовании установок ClickOnce - так что будьте осторожны, какие настройки вы там храните.

 private void updateDataInConfigFile()
    {
        Xml xmlConfigFile = new Xml(ProjectName.sSettingFileName);
        xmlConfigFile.SetValue("My Setting Section", "MyFirstSetting", MySettingValue);
}
  private void GetDataFromConfigFile()
    {
        Xml xmlConfigFile = new Xml(MyProject.sSettingFileName);

        txtAccessDriverId.Text = xmlConfigFile.GetValue("Mys Setting Section", "MyFirstSetting").ToString();
}
0 голосов
/ 16 марта 2010

Сохраненные пользователем настройки хранятся в папке AppData пользователя. Обычно C: \ Users \\ AppData \ Local \\

Значения, хранящиеся в файле .exe.config, являются значениями по умолчанию (которые вы устанавливаете в редакторе настроек в VS)

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...