2012-01-12 57 views
8

App.Config是一样的东西:的app.config没有保存价值

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<appSettings> 
    <add key="foo" value=""/> 
</appSettings> 
</configuration> 

我尝试使用以下方法来保存foo值:

private void SaveValue(string value) { 
    var config = 
     ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
    config.AppSettings.Settings.Add("foo", value); 
    config.Save(ConfigurationSaveMode.Modified); 
} 

,但这不会改变的价值它。我没有例外。 如何解决这个问题?提前致谢!

+0

下面是完整的例子[ConfigurationManager.OpenExeConfiguration方法(ConfigurationUserLevel)(http://msdn.microsoft.com/en-us/library/ms134265。 aspx) – 2012-01-12 19:19:00

回答

26

当您使用Visual Studio进行调试时,可能会修改<yourexe>.vshost.exe.config而不是<yourexe>.exe.config。在Release模式下构建应用程序时,只有<yourexe>.exe.config存在并将被更新。

您的代码还会在配置文件中添加一个额外的节点。使用类似下面的代码来更新设置:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
config.AppSettings.Settings["foo"].Value = "text";  
config.Save(ConfigurationSaveMode.Modified); 
+0

非常感谢您的回复!工作很好。 :) – Jack 2012-01-12 20:22:55

0

尝试通过先删除原有值,然后再添加它

config.AppSettings.Settings.Remove("foo"); 
config.AppSettings.Settings.Add("foo", value); 
config.Save(ConfigurationSaveMode.Modified); 
+1

不适合我。 – Jack 2012-01-12 19:23:11

3

App.config中被复制到构建输出文件夹,命名为<yourexe>.exe.config。这是在运行时加载并保存的实际配置文件。

看看你的输出文件夹,那里你可能会发现配置文件包含你的改变。

+2

正是我所看到的。没有变化。 – Jack 2012-01-12 19:25:57