我正在尝试使用下面的代码更新app.config文件中的值(该值在“属性”>“设置为应用程序作用域”中定义)
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>
我做错了什么?
谢谢
编辑1:我赶时间,所以我采用了这里提出的解决方案(手动更改app.config文件后直接访问文件 - 使用appSettings而不是applicationSettings):
http://www.longhorncorner.com/uploadfile/rahul4_saxena/update-app-config-key-value-at-run-time-in-wpf/
答案 0 :(得分:3)
configApp.AppSettings.Settings.Count.ToString()
这会尝试从<appSettings>
部分读取设置,而不是<applicationSettings>
。该文件的名称也应为app.config
。
在您的情况下,您需要使用Properties.Settings
静态类,才能从applicationSettings
访问您的设置。您可以尝试PontajWPF.Properties.Settings.Default.PontajAdminPwd
应用程序范围设置是只读的,只能通过在应用程序会话之间更改.exe.config文件来在设计时更改或 < /强>
但是,用户范围设置可以在运行时写入,就像更改任何属性值一样。新值在应用程序会话期间保持不变。您可以通过调用Settings.Save方法在应用程序会话之间保留对用户设置的更改。这些设置保存在User.config文件中。
详细了解MSDN
希望这有帮助。