在运行时修改appSettings“file”属性

时间:2016-07-02 17:15:20

标签: c# .net wpf app-config configurationmanager

        string appConfPath = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName;
        string fullPath = appConfPath + "\\Local\\RandFolder\\ThisOne\\application.settings.xml";
        var config =       ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);


        config.AppSettings.File = fullPath;
        config.AppSettings.Settings.Add("Password", "djydyjdjtdtyjddj");
        config.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection("appSettings");
        var temp = config.AppSettings;

我目前正在尝试设置appSettings配置的“file”属性,并在运行时引用XML包含的设置。我无法在编译之前执行此操作,因为XML设置文件将根据本地计算机设置进行更改。

但是,进行上述更改后,temp变量仅包含“Password”项,无法检索包含在文件路径中的其他设置。我知道正在设置文件属性,但由于某种原因,引用的设置仍然是隐藏的。 application.settings.xml文件看起来像这样......

<?xml version="1.0" encoding="utf-8"?>
<appSettings>
  <add key="ServerLocation" />
  <add key="PerforceURI" value="yuhsgbyluvgblsg" />
</appSettings>

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我不会试图批评你在做什么,而是向你提供一个简单的解释,说明你所看到的。

ConfigurationManager.RefreshSection刷新Configuration使用的static ConfigurationManager实例中的部分。它不会影响您通过调用Configuration创建的OpenExeConfiguration实例;为了实现这一目标,您需要再次致电OpenExeConfiguration