使用ConfigurationManager将用户值存储在与app config分开的文件中

use*_*667 4 c# configurationmanager app-config config visual-studio

好的,我只是放弃了这一点.

我希望能够使用用户配置文件记录用户首选项,该文件将从应用程序配置文件中引用.我正在尝试使用ConfigurationManager和配置文件.我可以从用户设置中读取得很好,但设置它们是另一个问题.我想将应用程序设置与两个不同文件中的用户设置分开.



我用这个时:

<appSettings file="user.config">
  </appSettings>
Run Code Online (Sandbox Code Playgroud)

和user.config看起来像:

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
  <add key="localSetting" value="localVal"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

我可以使用ConfigurationManager来读取本地设置,但不能保存到文件中.

var oldLocVal = ConfigurationManager.AppSettings["localSetting"]; 
ConfigurationManager.AppSettings.Set("localSetting", "newLocalValue"); // Doesn't save to file.
Run Code Online (Sandbox Code Playgroud)



相反,我的user.config文件是:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="localSetting" value="localVal"/>
  </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

然后我想以这种方式调用并保存AppSettings:

var uMap = new ConfigurationFileMap("user.config");
var uConfig = ConfigurationManager.OpenMappedMachineConfiguration(uMap);
var oldLocalVarFromConfig = uConfig.AppSettings.Settings["localSetting"]; // NO
uConfig.AppSettings.Settings.Remove("localSetting");                      // NO
uConfig.AppSettings.Settings.Add("localSetting", "newValue");
uConfig.Save();
Run Code Online (Sandbox Code Playgroud)

但它不会让我访问配置的应用程序设置.(将某些内容转换为AppSettings时出现问题)



我也在app config 元素中尝试使用configSource而不是file属性appSettings.

我在这里使用这些例子寻求帮助,但不幸的是,这还不够.

提前致谢.

Sea*_*man 5

您可以将外部配置文件加载到"配置"实例中.下面是一个单例类的示例,其中包含使用此策略的静态构造函数.我想你可以稍微调整一下来做你想做的事.

  private const string _path = @"E:\WhateverPath\User.config"

  static ConfigManager()        
    { 
        ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap()          
        { 
            ExeConfigFilename = _path
        }; 

        Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);

        // get some custom configuration section
        _someConfigSection = config.GetSection("SomeSection") as SomeSection; 

        // or just get app settings 
        _appSettingSection = config.AppSettings; 
    }
Run Code Online (Sandbox Code Playgroud)

也许尝试添加这种方式,确保调用Save()

_appSettingSection.Settings.Add("SomeKey", "SomeValue"); 

//make sure to call save
config.Save(); 
Run Code Online (Sandbox Code Playgroud)