gpt4 book ai didi

c# - 将 user.config 拆分为不同的文件以便更快地保存(在运行时)

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:20 26 4
gpt4 key购买 nike

在我的 c# Windows 窗体应用程序 (.net 3.5/VS 2008) 中,我有 3 个设置文件,生成一个 user.config 文件。

一个设置文件包含较大的数据,但很少更改。经常变化的数据很少。但是,由于保存设置总是写入整个 (XML) 文件,所以它总是“很慢”。

SettingsSmall.Default.Save(); // slow, even if SettingsSmall consists of little data 

我能否以某种方式配置设置以生成两个文件,从而导致:

SettingsSmall.Default.Save(); // should be fast
SettingsBig.Default.Save(); // could be slow, is seldom saved

我已经看到我可以使用 SecionInformation 类进行进一步的自定义,但是对我来说最简单的方法是什么?这是否可以通过更改 app.config (config.sections) 来实现?

--- 添加了关于 App.config 的信息

我得到一个文件的原因可能是 App.config 中的 configSections。这是它的样子:

  <configSections>    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">      <section name="XY.A.Properties.Settings2Class" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />      <section name="XY.A.Properties.Settings3Class" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />    </sectionGroup>  </configSections>

当我添加第二个和第三个设置文件时,我得到了这些部分。我没有注意这个,所以它不知何故是 VS 2008 的默认设置。单个 user.config 有这 3 个部分,它是绝对透明的。

只是我不知道如何告诉 App.config 创建三个独立的文件而不是一个。我已经“玩过”上面的 app.config,但是例如当我删除配置部分时,我的应用程序会异常终止。

最佳答案

正如您已经发现的那样,VS 在编译时将项目中的所有配置和设置文件放入一个大的 applicationname.exe.config 文件中,据我所知您无法加载另一个配置文件作为“主要的”。

一个解决方案是拥有您自己的设置类实现并让它加载另一个文件。

替代方法是使用 OpenMappedExeConfiguration ConfigurationManager 中的方法。您可以加载配置文件并使用访问其应用程序设置值

ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = "test.config";
Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
var section = ((AppSettingsSection)configuration.GetSection("appSettings")).Settings;
foreach (string key in section.AllKeys) {
Console.WriteLine("{0}={1}", key, section[key].Value);
}

您应该能够获取自定义部分并在其上使用 Save 方法。

关于c# - 将 user.config 拆分为不同的文件以便更快地保存(在运行时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2804669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com