如何在WPF应用程序中编辑app.config的ApplicationSettings部分

时间:2012-02-28 15:26:35

标签: visual-studio-2010 c#-4.0 configuration app-config

我一直在研究这个问题。但我没有遇到任何令人满意的解决方案。

场景是我有一个WPF客户端应用程序。我在项目中添加了几个Web引用,并且我对Settings.Designer.cs文件进行了修改,并对srever url和port进行了硬编码引用。这开始反映在ApplicationSettings部分的app.config文件中。

在用户登录之前,他可以为服务器指定ServerIP和端口的设置。现在我想在app.config中保存这些设置,并从那里获取服务器IP和端口的值,或将其保存在其他位置,并通过此IP和端口连接到服务器。我希望这些改变能够持续下去。

我能想到的一个解决方案是通过XML阅读器读取app.config,修改文件,保存并以某种方式重新启动应用程序。

我无法想到更好的场景,因为我认为无法从应用程序内部修改ApplicationSettings部分。

编辑:

我的applicationSettiings部分看起来像这样:

<applicationSettings>
<ApplicationName.Properties.Settings>
  <setting name="Web_Service_Reference_Name1" serializeAs="String">
    <value>http://10.1.100.118:8080/AD/WebService1</value>
  </setting>
  <setting name="Web_Service_Reference_Name2" serializeAs="String">
    <value>http://10.1.100.118:8080/AD/WebService2</value>
  </setting>
</ApplicationName.Properties.Settings>
</applicationSettings>

1 个答案:

答案 0 :(得分:1)

有时候在这个网站上发布了类似的问题 我有一个简单的解决方案,如下所示:

public void WriteLocalValue(string localKey, string curValue) 
{ 
    Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); 
    KeyValueConfigurationElement k = config.AppSettings.Settings[localKey]; 
    if (k == null) 
        config.AppSettings.Settings.Add(localKey, curValue); 
    else 
        k.Value = curValue; 
    config.Save(); 
} 

public string ReadLocalValue(string localKey, string defValue) 
{ 
    string v = defValue; 
    try 
    { 
        Configuration config = ConfigurationManager.OpenExeConfiguration( Application.ExecutablePath); 
        KeyValueConfigurationElement k = config.AppSettings.Settings[localKey]; 
        if (k != null) v = (k.Value == null ? defValue : k.Value); 
            return v; 
    } 
    catch { return defValue; } 
} 
相关问题