2016-10-24 3 views
0

У меня есть приложение WPF, которое использует встроенные функции настроек. Когда я выпускаю новую версию приложения, я увеличиваю версию сборки и выполнить следующий код при запуске приложения:Настройки.Default.Upgrade() не поддерживает текущие настройки

if (Settings.Default.IsSettingsUpgradeRequired) //this defaults to true when a new version of this software has been released 
      { 
       Settings.Default.Upgrade(); //upgrade the settings to the newer version 
       Settings.Default.Reload(); 
       Settings.Default.IsSettingsUpgradeRequired = false; 
       Settings.Default.LastSettingsUpdate = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); 
       Settings.Default.Save(); 
      } 

Проблема заключается в том, что предыдущие настройки не сохраняются. Вместо этого создается новая папка в папке \ AppData \ Local \ при каждой новой версии. Таким образом, используются настройки по умолчанию, а не параметры предыдущей версии. Я знаю, что при нормальных обстоятельствах должна быть одна папка, содержащая много подпапок с версией приложения как имя. Вместо этого у меня есть МНОГИЕ папки, каждая из которых содержит только одну папку с версией приложения как имя. Структура папок в локальной \ выглядит следующим образом:

  • myApp.exe_Url_5s2axp5sywfyhblm3201qetpqnmwnvsc
  • myApp.exe_Url_ft4ih1ze0qsz5abu11t334omxo1431c0
  • myApp.exe_Url_glsc2d3cjmswry2bxebb53jndfptav1x
  • myApp.exe_Url_qngn1rqmbfyy42fdgpmc3ystsaknuxnv
  • myApp.exe_Url_vqn0ogftrchl1fild5fe34hmijvmd2zr

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

Edit: другая вещь, которую я заметил сегодня, что если изменить расположение папки приложения (позволяет сказать, переместить его из рабочего стола в C: \ MyApp), приложение создает новую папку настроек при первом запуске. Почему система не распознает его как одно приложение?

+0

Я не использовать 'Reload()' в коде я использую для обновления параметров, и работает нормально. Попробуйте удалить его. –

+0

Уже пробовал, ничего не меняет. Проблема в том, что система создает новую папку приложения для каждой версии программного обеспечения, например, если она не признает, что это одно и то же приложение ... – Cleo

+0

Возможно, это связано с наличием/отсутствием файла манифеста? Или мне, возможно, придется подписать заявку? – Cleo

ответ

0

Я, наконец, получил его на работу. Я не знаю причину поведения desrcibed, но один из этих 2-х вещей установил его:

  • Добавлена ​​файл манифеста по умолчанию, и изменил «assemblyIdentity» узел («Версия» атрибут, кажется, не имеют эффект на настройки)
  • Активированный функцию подписания Visual Studio (Свойства проекта -> Signing)
Смежные вопросы