Файл Settings.settings продолжает сбрасываться - PullRequest
9 голосов
/ 04 августа 2009

При отладке моего проекта в Visual Studio 2008 мой файл Settings.settings продолжает сбрасываться между сборками. Есть ли способ предотвратить это?

Спасибо.

Ответы [ 4 ]

12 голосов
/ 06 августа 2009

Хорошо, я нашел ответ, который действительно искал. По сути, вам нужно вызвать LocalFileSettingsProvider.Upgrade. Однако, поскольку я буду развертывать с помощью ClickOnce, он сделает это автоматически.


В: Хорошо, но как узнать, когда позвонить в Upgrade?

A: Хороший вопрос. В Clickonce, когда вы устанавливаете новую версию вашего приложения, ApplicationSettingsBase обнаружит его и автоматически обновит настройки для вас в момент загрузки настроек. В случаях, не связанных с Clickonce, автоматическое обновление не производится - вам нужно позвонить в Upgrade самостоятельно. Вот одна идея для определения, когда вызывать Upgrade:

Имейте логическую настройку CallUpgrade и присвойте ему значение по умолчанию true. Когда ваше приложение запускается, вы можете сделать что-то вроде:

if (Properties.Settings.Value.CallUpgrade)
{
    Properties.Settings.Value.Upgrade();
    Properties.Settings.Value.CallUpgrade = false;
}

Это обеспечит вызов Upgrade () только при первом запуске приложения после развертывания новой версии.

REF: http://blogs.msdn.com/rprabhu/articles/433979.aspx

2 голосов
/ 04 августа 2009

Я считаю, что файлы Settings.settings сохраняются на основе номера текущей версии, в основном как «функция», в которой настройки не сохраняются между разными версиями одной и той же программы на компьютере. Предполагая, что вы автоматически увеличиваете номер версии при компиляции (1.0. * В AssemblyInfo.cs), вы будете сбрасывать настройки каждый раз, когда компилируете новую версию.

Чтобы исправить это, лучше всего сериализовать свой собственный файл настроек в каталог Application Data.

0 голосов
/ 07 августа 2009

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

0 голосов
/ 04 августа 2009

Сверху головы, я думаю, вы можете установить в свойствах файла (в Visual Studio щелкните правой кнопкой мыши Свойства) параметр «не копировать» при сборке / запуске проекта. Вероятно, происходит то, что, когда ваш проект собран, файл настроек копируется в каталог отладочной корзины, перезаписывая файл настроек из предыдущего запуска.

...