我有一个程序可以编辑app.config文件并保存。但是我可以编辑和保存,但我无法重新启动app.config数据而无需重新启动应用程序。 我尝试了几种方法。我不确定有什么问题
这是我的代码..
private void btnSave_Click(object sender, EventArgs e)
{
UpdateConfig("IP",radtxtIP.Text, "myApp.exe");
UpdateConfig("port", radtxtPort.Text, "myApp.exe");
LoadConfigData();
}
private void UpdateConfig(string key, string value, string fileName)
{
var configFile = ConfigurationManager.OpenExeConfiguration(fileName);
configFile.AppSettings.Settings[key].Value = value;
configFile.Save();
}
public void LoadConfigData()
{
ConfigurationManager.RefreshSection("appSettings");
Properties.Settings.Default.Reload();
radtxtIP.Text = ConfigurationManager.AppSettings["IP"];
radtxtPort.Text = ConfigurationManager.AppSettings["port"];
}
当我点击保存按钮时,它会给我旧的设置。 我在阅读stackoverflow中的一些问题之后添加了这段代码,但没有使用
ConfigurationManager.RefreshSection("appSettings");
Properties.Settings.Default.Reload();
我是否需要创建ConfigurationManager的新实例? 我使用配置数据的方式是否正常。 我的应用程序在很多地方使用app.config数据。因此,在更改配置数据时必须重新启动应用程序。
答案 0 :(得分:1)
我使用过这样的东西,并希望这个很容易
class SettingsService
{
public static string GetSetting(string key)
{
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
return config.AppSettings.Settings[key].Value.ToString();
}
public static void UpdateConfig(string key, string value )
{
var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
configFile.AppSettings.Settings[key].Value = value;
configFile.Save(ConfigurationSaveMode.Modified);
}
}
可以通过调用UpdateConfig("key1","value")
方法更新appsettings
并且可以使用此GetSetting("key")
注意: - 当使用VS运行应用程序时,它只更新ApplicationName.vshost.exe(配置文件)
答案 1 :(得分:0)
请确保加载新设置,如下所示
// Get the AppSettings section.
AppSettingsSection appSettingSection = (AppSettingsSection)config.GetSection(sectionName);