2014-09-16 2 views
0

В настоящее время я работаю над надстройкой уровня приложения WordPress для Microsoft Word, используя C#. Мое приложение содержит файл app.config. В этом файле я сохраняю пользовательские настройки (userSettings-Section) и некоторые данные, определенные настраиваемым ConfigurationSection. Данные, хранящиеся внутри настраиваемого ConfigurationSection, также зависят от пользователя.Обновление файла app.config после обновления установщика

I доступ к пользовательскому-настройки следующим образом:

Properties.Settings.Default.MyUserSetting 

Обычай ConfigurationSection Я использую как:

ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal) 
    .GetSection("MyCustomConfigurationSection") 

Мои вопросы:

  1. ли я даже используйте app.config «правильный» способ? (Я знаю, что, вероятно, существует не только один правильный способ, но один из них «мой путь»)

  2. Какой ConfigurationUserLevel использует Propeties.Settings.Default? Есть ли способ установить/изменить его?

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

Я развертываю свою надстройку с помощью установщика, созданного с помощью WiX. В настоящий момент я использую CustomActions, который вручную вставляет код для каждого добавленного/удаленного/измененного параметра. Но мне было интересно, есть ли встроенный способ сделать это.

+0

У меня нет опыта работы с надстройками, но приложение .NET поддерживает несколько файлов конфигурации. Вы можете найти этот пример полезным [CodePlex: обрабатывать несколько файлов конфигурации] (http: //www.codeproject.com/Все статьи/5606/Файлы с несколькими файлами-дескрипторами) –

+0

Кажется, что вам нужно предоставить полный xPath в виде строки, чтобы получить значение. Я бы предпочел остаться с ними через свойства. – timnot90

ответ

0

Я некоторые исследования весь день, и теперь я думаю, что могу ответить на мои вопросы для себя:

Q: Какие ConfigurationUserLevel ли использовать Propeties.Settings.Default? Есть ли способ установить/изменить его?
A: Кажется, что Propeties.Settings.Default использует ConfigurationUserLevel.PerUserRoamingAndLocal, что звучит логично, поскольку они содержат только пользовательские настройки ... Я не знаю, можно ли его изменить, но для меня это не обязательно.

В: Есть ли способ автоматически сохранить пользовательские настройки во время обновления моего приложения, но в то же время добавить новые созданные настройки?
A: Я узнал, что в настройках есть Upgrade() - Method, который должен заботиться о копировании пользовательских настроек между старой версией продукта и новой. Для получения дополнительной информации см. http://ngpixel.com/2011/05/05/c-keep-user-settings-between-versions/. Должен признаться, что у меня не было возможности проверить это, поскольку у меня нет прав на сборщик, но я буду полагаться на него. Я вернусь к этому сообщению после того, как я проверил свое решение.
Кроме того, я больше не использую настраиваемую конфигурацию. Вместо этого я получаю из System.Configuration.ApplicationSettingsBase, что означает, что я могу обрабатывать пользовательские данные точно так же, как и Properties.Settings, включая метод Upgrade(). См. this post для получения дополнительных сведений о том, как его использовать.

Надеюсь, это поможет кому-то.

Смежные вопросы