Почему сохраненные пользовательские настройки не загружаются?

у меня есть приложение windows, которое использует сборку, которая хранит некоторые параметры конфигурации в настройках приложения по умолчанию.

настройки могут быть изменены во время работы и сохраняются таким образом:

Properties.Settings.Default.SelectedCOMPort = options.SelectedCOMPort;
Properties.Settings.Default.Save();

настройки сохранены правильно, и я подтверждаю это, глядя на пользователя.конфигурационный файл, сохраненный в каталоге приложений пользователей, например

C:Documents and Settingse399536Local SettingsApplication DataMyCompanyMyTool

однако, когда инструмент закрыт, а затем снова запущен, все настройки загружаются их значения по умолчанию.

проверка пользователей.файл конфигурации после запуска приложения подтверждает, что параметры по-прежнему сохраняются.

настройки загружаются таким образом:

options.SelectedCOMPort = Properties.Settings.Default.SelectedCOMPort;

почему используются настройки по умолчанию, а не сохраненные?

Я что-то пропустил??

@ Tenaciouslmpy Настройки загружаются во время конструктора сборки, который сам загружается в виде load события main собрание.

@ Austin Это автономное приложение, которое я отлаживаю в Visual Studio.

2 ответов


Если вы перекомпилируете приложение между запусками, обратите внимание, что он будет учитывать, что новая версия приложения и будет не автоматическая загрузка настроек для каждого пользователя. Вам нужно вызвать настройки.По умолчанию.Обновление в этой ситуации.

один из способов сделать это только при необходимости-добавить параметр NeedsUpgrade (значение True) к настройкам приложения по умолчанию для каждого пользователя. При запуске приложения проверьте, является ли NeedsUpgrade true. Если это так, вызовите обновление, установите NeedsUpgrade в False и сохраните установка. При следующем изменении версии приложения NeedsUpgrade сбросит значение True, и Вы автоматически вызовете обновление, чтобы снова ввести любые существующие настройки пользователя.

убедитесь, что вы устанавливаете NeedsUpgrade после вызов обновления, или он будет стерт, когда настройки будут обновлены.

if (Settings.Default.NeedsUpgrade)
{
    Settings.Default.Upgrade();
    Settings.Default.NeedsUpgrade = false;
    Settings.Default.Save();
}

Это звучит так, как будто вы отлаживаете приложение из Visual Studio, когда каждый раз при запуске нового сеанса вы начинаете с данных по умолчанию.

Если вы видите это с установленным выпуском, то я бы предположил, что вы на самом деле не используете строковые значения, когда думаете, что это так.