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)
<?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时出现问题)
configSource而不是file属性appSettings.
提前致谢.
您可以将外部配置文件加载到"配置"实例中.下面是一个单例类的示例,其中包含使用此策略的静态构造函数.我想你可以稍微调整一下来做你想做的事.
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)