【发布时间】:2010-12-24 14:05:11
【问题描述】:
虽然有很多关于 .net 配置文件的帖子,但我相信我的要求不允许提出任何解决方案(或者我对流程的了解不足以使其适合我)。
情况是我有一个 Windows 窗体应用程序(也可以是另一个应用程序),它将某些用户输入字段(例如 IP 地址)以及表单属性(窗口大小等)绑定到应用程序设置(在属性->设置区域)。据我了解,这些设置与我项目的 app.config 文件中表示的设置相同,因此我应该能够使用 System.Configuration.ConfigurationManager 类来操作这些设置。
我想要做的是允许用户导出和导入所有保存的设置。与其对某些自定义对象进行序列化或使用 INI 文件,我认为只保存和替换应用程序使用的配置文件会更容易。
将当前设置保存到指定文件相对容易:
internal static void Export(string settingsFilePath)
{
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
config.SaveAs(settingsFilePath);
}
但是,事实证明,恢复配置文件以覆盖当前设置很困难。 好像可以这样打开配置文件
var newConfig = ConfigurationManager.OpenExeConfiguration(settingsFilePath)
但我不知道如何将当前配置中的所有设置完全替换为导入文件的设置。 [编辑:这个重载应该接收 .exe 的路径,而不是 .config 文件。如果调用代码未引用配置文件中的相同程序集,则以这种方式打开 exe 文件可能会引发 ConfigurationErrorsException。]
也许我只需要使用other posts 中列出的方法来仅替换配置的一部分,而不是全部,但我现在不知道它会如何工作。
有什么想法吗?我是否走在正确的轨道上,还是应该只使用 INI 文件(或其他东西)?
【问题讨论】:
标签: .net configuration import export configuration-files