如何在C#中为WPF应用的配置文件新增自定义配置段
问题解答
WPF本身不限制配置文件新增配置段的操作,你找不到AddSection/SetSection相关方法,是因为.NET 配置API的操作需要先打开可写的配置实例,不能直接对默认静态的ConfigurationManager执行写入操作。
具体实现步骤
- 首先确保你的项目已经添加了
System.Configuration程序集引用(默认WPF项目不会自动引入该程序集) - 按照以下流程执行配置段新增/修改操作:
// 1. 打开当前应用的可写配置实例 Configuration appConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // 2. 实例化你要新增的自定义配置段(也可以是AppSettingsSection等内置段类型) YourCustomSection newSection = new YourCustomSection(); // 给配置段赋值对应的表格行数据 newSection.Field1 = "xxx"; newSection.Field2 = "xxx"; // 3. 新增配置段 appConfig.Sections.Add("自定义段的唯一名称", newSection); // 4. 保存修改 appConfig.Save(ConfigurationSaveMode.Modified); // 5. 刷新配置缓存,保证后续调用GetSection能拿到最新数据 ConfigurationManager.RefreshSection("自定义段的唯一名称");
常见注意事项
- 调试阶段在Visual Studio中运行程序时,修改的是输出目录下的
[你的程序名].exe.config文件,而非项目根目录的App.config,每次重新生成项目时VS会用App.config覆盖输出目录的配置文件,调试时的修改不会保留到源码里。 - 默认情况下,普通用户没有权限修改
Program Files目录下的程序配置文件,如果你的软件需要安装到系统盘,建议将这类动态配置存储到用户目录下的应用专属路径,或者使用ConfigurationUserLevel.PerUserRoaming打开用户级别的配置文件进行操作。 - 如果表格行数较多,不建议每行单独加一个配置段,可以自定义包含集合属性的配置段,把所有表格行存到同一个段的集合里,结构更易维护。
内容的提问来源于stack exchange,提问作者Batman
相关产品推荐
相关产品推荐

