Автоматически “обновлять” пользовательские настройки с предыдущей версии файла app.config?

StackOverflow https://stackoverflow.com/questions/1198193

Вопрос

Каждый раз, когда я компилирую свое приложение и номер версии меняется (у меня есть автоматически увеличивающийся номер сборки), я теряю настроенные пользователем параметры app.config, поскольку они хранятся в папке AppData для определенной версии.По сути, каждый выпуск моего приложения начинается с нуля, что касается пользовательских настроек.

Хотя это небольшое раздражение при разработке, оно поднимает вопрос, когда я подхожу к развертыванию / выпуску - если я использую app.config для хранения своих пользовательских настроек, будут ли персонализированные настройки пользователя проверяться каждый раз, когда они устанавливают исправление, изменяющее номер версии моего приложения? Если да, то есть ли простой способ "обновить" настройки по сравнению с предыдущей версией?Я знаю, что использование HKCU в реестре - еще один вариант, но мне нравится простота пространства имен My.Settings, и я бы хотел остаться с app.config.

Еще один вопрос SO спрашивает что-то подобное, хотя ответ не кажется таким уж ясным.Будет ли достаточно настроить мой MSI таким образом, чтобы он запрашивал обновление у пользователя, чтобы сохранить эти настройки на уровне пользователя?

Это было полезно?

Решение

Вы смотрели на Настройки базы приложений.Обновить()?Это позволяет обновить настройки с предыдущей версии с помощью следующего вызова:

My.Settings.Upgrade()

Другие советы

Не уверен почему, но ни команда upgrade, ни get previous version, похоже, у меня не работают.Что я мог делать не так?Нужно ли мне вызвать команду обновления или что-то в этом роде?Я делаю это при загрузке формы, должно ли это быть событием приложения?

Обновить

Выяснил, почему, похоже, это не работает, когда вы используете 4-значный номер основной версии.Я использовал 2012 год в качестве основного номера версии.Я изменил это значение на 12, и оно работает как шарм, хотя и не соответствует требованиям millenium.И все же у меня есть 88 лет, прежде чем мне нужно будет начать беспокоиться об этом!

Рассматривали ли вы возможность развертывания ClickOnce?Затем эта тема будет рассмотрена в глубине.ИМО, ClickOnce намного проще как для разработчика, так и для пользователя.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top