2012-02-07 3 views
0

Я пытаюсь обновить значение в моем файле app.config, используя приведенный ниже код (значение определяется в Свойства> Параметры в области видимости приложения)настройки приложения Обновление в приложении WPF

System.Configuration.Configuration configApp = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
MessageBox.Show(configApp.AppSettings.Settings.Count.ToString()); //this shows 0 
configApp.AppSettings.Settings["PontajAdminPwd"].Value = "dsfs"; 
configApp.Save(ConfigurationSaveMode.Full); 

но говорят что configApp.AppSettings.Settings пусто ...

Это часть моего app.config файла

<applicationSettings> 
    <PontajWPF.Properties.Settings> 
     <setting name="PontajAdminPwd" serializeAs="String"> 
      <value>696W3oybVP85szuiY2Qpiw==</value> 
     </setting> 
    </PontajWPF.Properties.Settings> 
</applicationSettings> 

что я делаю неправильно?

Спасибо

EDIT 1: Я в спешке, так что я принял решение, предложенное здесь (прямой доступ к файлам после изменения файла app.config вручную - с помощью AppSettings вместо applicationSettings):
http://www.longhorncorner.com/uploadfile/rahul4_saxena/update-app-config-key-value-at-run-time-in-wpf/

+0

Если это не так, как мне кажется, но вам, вероятно, не нужна OpenExeConfiguration, если вы просто используете ConfigurationManager.AppSettings – hyp

+0

@hyp это то же самое, Amar Palsapure это правильно о том, что он не ищет нужного места – mslliviu

ответ

2

configApp.AppSettings.Settings.Count.ToString() это попытается прочитать настройки от <appSettings> раздел, а не <applicationSettings>. Также имя файла должно быть app.config.

В вашем случае вам нужно будет использовать статический класс Properties.Settings, чтобы получить доступ к вашим настройкам от applicationSettings. Вы можете попробовать PontajWPF.Properties.Settings.Default.PontajAdminPwd

настройки области приложения доступны только для чтения, и может быть изменен только во время разработки или путем изменения файла .exe.config между сессиями приложения.

Параметры области видимости, однако, могут быть записаны во время выполнения, так же, как вы изменили бы значение свойства. Новое значение сохраняется в течение всего сеанса приложения. Вы можете сохранить изменения пользовательских настроек между сеансами приложений, вызвав метод Settings.Save. Эти настройки сохраняются в файле User.config.

Подробнее о MSDN

Надеются, что это помогает.

+0

. config - это имя файла, и оно автогенерируется VS. У объекта configApp нет элемента с именем applicationSettings, каким-либо другим способом его редактировать? – mslliviu

+0

Я обновил свой ответ. Параметры Application-Scope (которые вы используете) читаются только при выполнении приложения. Вместо использования параметров области приложения используйте параметры пользовательской области видимости, если вы хотите изменить значения. –

+0

К сожалению PontajWPF.Properties.Settings.Default.PontajAdminPwd доступен только для чтения. Вы правы в отношении начального оператора, я использовал код в другом приложении (winforms), где теги в app.config действительно были «», и там работает код. Итак, знаете ли вы, можно ли изменить тег? – mslliviu

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