Настройки области приложения доступны только для чтения и могут быть изменены во время разработки или путем изменения файла .config
между сеансами приложения.
Настройки пользовательской области могут быть записаны во время выполнения, но если вы измените / удалите/ добавить параметр, который вам нужен для вызова метода Properties.Settings.Default.Save();
, чтобы сохранить изменения настроек между сеансами приложения;В противном случае настройки могут быть очищены при каждом обнаружении изменения.
Чтобы проверить, сохраняются ли ваши изменения, вы можете найти пользовательские настройки, хранящиеся здесь %userprofile%\appdata\local
или %userprofile%\Local Settings\Application Data
.
Обновление
Если я вас хорошо понимаю, это решение будет работать для вас.
Я попытался смоделировать вашу ситуацию, скопировав содержимое папки bin в новый проект и изменив ProjectName.exe.config
и App.config
файл вручную, значение по умолчанию (в старом проекте) для Color
было Green
, но мое ожидаемое значение было Purple
.
Этот раздел - то, что ядобавлено к файлам ProjectName.exe.config
и App.config
:
<userSettings>
<Namespace.Properties.Settings>
<setting name="Color" serializeAs="String">
<value>Purple</value>
</setting>
</Namespace.Properties.Settings>
</userSettings>
После выполнения вышеприведенного вывода Properties.Settings.Default.Color
было Green
.
Но почему это происходит? Так как значения по умолчанию кэшируются, и если администратор не может получить доступ к файлу config
или открыть его, вместо него будут использоваться значения по умолчанию.
Очевидно, что проблема имеет решение. Вы можете решить эту проблему, просто вызвав метод Reload
, прежде чем пытаться прочитать значение:
Properties.Settings.Default.Reload();
var color = Properties.Settings.Default.Color;
Как описано в документации :
ПерезагрузкаМетод очищает текущие кэшированные значения свойств, вызывая перезагрузку этих значений из постоянного хранилища при последующем доступе к ним. Этот метод выполняет следующие действия:
Он очищает текущие кэшированные свойства путем очистки коллекции, представленной свойством PropertyValues.
Он вызываетСобытие PropertyChanged для каждого члена коллекции Properties.
Обновить контрастирует с Сброс в том, что первый загрузит последний набор сохраненных значений параметров приложения, тогда как последнийзагрузит сохраненные значения по умолчанию.