Сохранение переменных app.config в обновлениях с помощью щелчка после развертывания - PullRequest
9 голосов
/ 08 марта 2009

Каждый раз, когда выпускается новое обновление для приложения одним щелчком мыши, переменные в файле app.config уничтожаются

<userSettings>
    <app.My.MySettings>
      <setting name="Email" serializeAs="String">
        <value />
      </setting>
      <setting name="UserName" serializeAs="String">
        <value />
      </setting>
    </app.My.MySettings>
  </userSettings>

Как я могу предотвратить это?

Есть ли способ извлечь переменные из предыдущей версии приложения?

Ответы [ 2 ]

15 голосов
/ 08 марта 2009

У вас есть опция "Приложения должны проверять наличие обновлений"?

Взгляните на Изучение секретов постоянных настроек приложения (раздел, озаглавленный «Ведение настроек между версиями программы»):

Для любых настроек из текущих версия, которая соответствует настройкам в предыдущая версия, эта процедура будет импортировать их в текущую версию Файл user.config:

В точке входа в вашу программу поместите следующий код.

if (Properties.Settings.Default.UpgradeSettings) 
{
   Properties.Settings.Default.Upgrade();
   Properties.Settings.Default.UpgradeSettings = false;
}

Обратите внимание, что UpgradeSettings - это логическая пользовательская настройка (не приложение), которую нужно добавить самостоятельно, и вы хотите, чтобы значением по умолчанию было True.

0 голосов
/ 01 апреля 2011

Если вы используете настройки уровня пользователя вместо настроек уровня приложения, он скопирует их вперед при получении новой версии. Однако безопаснее всего отделить эти данные от обновления ClickOnce, «опыта». Посмотрите, поможет ли это:

http://robindotnet.wordpress.com/2009/08/19/where-do-i-put-my-data-to-keep-it-safe-from-clickonce-updates/

...