Я не верю, что какой-либо вопрос, связанный с оптимизацией, должен быть затоплен воспеванием неправильно процитированной фразы «Преждевременная оптимизация - корень всех зол», потому что код, оптимизированный для запутывания, - это то, что делает кодирование увлекательным
Пользовательские настройки зависят от пользователя, поэтому они не будут сохранены обратно в файл .exe.config, который является общесистемным.
Из документации LocalSettingsProvider
:
Параметры области приложения и пользовательские настройки по умолчанию: хранится в файле с именем application.exe.config, который создается в том же каталоге, что и запускаемый файл. заявка параметры конфигурации доступны только для чтения. Конкретные данные пользователя хранятся в файле с именем
username.config
, хранится в домашний каталог пользователя.
Итак, для приложения UserSettingsTest, запускаемого из VS под отладчиком (отсюда и бит vshost), я получил путь:
C:\Users\Jon\AppData\Local\UserSettingsTest
\UserSettingsTest.vshost.e_Url_pdqoppugkz1vaawbhwkkcu5ibxpi2fgu
\1.0.0.0\user.config
Если ваша информация о сборке настроена на автоматическое генерирование любых номеров версий (1.0. *), То каждый раз, когда вы отлаживаете свое приложение, номер версии будет другим, и поэтому будет создаваться новый файл каждый раз.
Если это так, вам необходимо выполнить обновление файла настроек:
Properties.Settings.Default.Upgrade()
Вы также можете установить параметр NeedsUpgrading
на true
с помощью по умолчанию и установите для него значение false после выполнения обновления, чтобы конечные пользователи, которые не меняют номера версий при каждом запуске приложения, не выполняли обновление все время
Все настройки области действия пользователя сохраняются в данных приложения в папке, которая указывает версию вашего приложения и имя.
Вы можете увидеть эти папки, нажав «синхронизировать» в диалоговом окне «Настройки приложения».
Обычно в Vista:
Выполнено таким образом, поскольку настройки связаны с текущим пользователем и UAC . В Vista также можно увидеть, что даже настройки приложения не сохраняются в файле конфигурации.
[CompanyName] и [ProductName] взяты из настроек информации о сборке.