Hou*_*man 73 .net c# settings configurationmanager appsettings
这可能听起来太琐事了,而且我做了与文章中建议的相同的事情,但它没有按预期工作.希望有人能指出我正确的方向.
我想保存每个AppSettings的用户设置.
一旦Winform关闭,我触发:
conf.Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (ConfigurationManager.AppSettings["IntegrateWithPerforce"] != null)
ConfigurationManager.AppSettings["IntegrateWithPerforce"] =
e.Payload.IntegrateCheckBox.ToString();
else
config.AppSettings.Settings.Add("IntegrateWithPerforce",
e.Payload.IntegrateCheckBox.ToString());
config.Save(ConfigurationSaveMode.Modified);
Run Code Online (Sandbox Code Playgroud)
因此,当条目第一次不存在时,它只会创建它,否则它将修改现有条目.然而,这并不节省.
1)我做错了什么?
2)我希望在哪里再次保存应用程序设置的用户设置?是在Debug文件夹中还是在C:\ Documents and Settings\USERNAME\Local Settings\Application Data文件夹中?
Mar*_*rek 69
有关如何更改app.config文件中appSettings部分中的值:
config.AppSettings.Settings.Remove(key);
config.AppSettings.Settings.Add(key, value);
Run Code Online (Sandbox Code Playgroud)
做的工作.
当然,更好的做法是设置类,但这取决于你追求的是什么.
Wah*_*tar 61
我知道我迟到了:)但这是我怎么做的:
public static void AddOrUpdateAppSettings(string key, string value)
{
try
{
var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var settings = configFile.AppSettings.Settings;
if (settings[key] == null)
{
settings.Add(key, value);
}
else
{
settings[key].Value = value;
}
configFile.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
}
catch (ConfigurationErrorsException)
{
Console.WriteLine("Error writing app settings");
}
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看MSDN
Tom*_*son 39
不想<appSettings>给<customUserSetting>部分.使用(Web)ConfigurationManager读取和写入要容易得多.ConfigurationSection,ConfigurationElement和ConfigurationElementCollection要求您派生自定义类并实现自定义ConfigurationProperty属性.对于仅仅是日常生活的IMO而言太过分了.
以下是读取和写入web.config的示例:
using System.Web.Configuration;
using System.Configuration;
Configuration config = WebConfigurationManager.OpenWebConfiguration("/");
string oldValue = config.AppSettings.Settings["SomeKey"].Value;
config.AppSettings.Settings["SomeKey"].Value = "NewValue";
config.Save(ConfigurationSaveMode.Modified);
Run Code Online (Sandbox Code Playgroud)
之前:
<appSettings>
<add key="SomeKey" value="oldValue" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
后:
<appSettings>
<add key="SomeKey" value="newValue" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
Dan*_*ann 23
也许你应该看看添加一个设置文件.(例如App.Settings)创建此文件将允许您执行以下操作:
string mysetting = App.Default.MySetting;
App.Default.MySetting = "my new setting";
Run Code Online (Sandbox Code Playgroud)
这意味着您可以编辑然后更改项目,其中项目是强类型的,最重要的是......在部署之前,您不必触摸任何xml!
结果是应用程序或用户上下文设置.
查看设置文件的"添加新项"菜单.
Omi*_* S. 23
关于win表单的基本问题是解决方案:(我只是通过user1032413将代码更改为rflect windowsForms设置)如果它是一个新密钥:
Configuration config = configurationManager.OpenExeConfiguration(Application.ExecutablePath);
config.AppSettings.Settings.Add("Key","Value");
config.Save(ConfigurationSaveMode.Modified);
Run Code Online (Sandbox Code Playgroud)
如果密钥已存在:
Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
config.AppSettings.Settings["Key"].Value="Value";
config.Save(ConfigurationSaveMode.Modified);
Run Code Online (Sandbox Code Playgroud)
请在保存电话后尝试添加此项.
ConfigurationManager.RefreshSection( "appSettings" );
Run Code Online (Sandbox Code Playgroud)
小智 6
请记住,ConfigurationManager只使用一个app.config - 一个在启动项目中.
如果你将一些app.config放到解决方案A并从另一个解决方案B中引用它,那么如果你运行B,将忽略来自A的app.config.
所以例如单元测试项目应该有自己的app.config.
| 归档时间: |
|
| 查看次数: |
205627 次 |
| 最近记录: |