• 【C#】Config配置文件的读写,及无法写入/保存配置文件的问题


    目的:
    一些数据为了在项目打包好后也能方便的修改和调用,通常会把这些数据放到配置文件中,避免硬编码,修改配置文件内容更方便,而不用修改源代码。

    使用:
    在解决方案资源管理器中找到App.config文件,这个XML文件就是配置文件。在该XML文件中找到< appSettings >节点,按如下方法添加内容即可:

    <appSettings>
        <add key="NAME" value="name" />
        <add key="AGE" value=10 />
        .....
    </appSettings>
    

    一、读取配置文件:

    string name = ConfigurationManager.AppSettings["NAME"].ToString();
    int age = int.Parse(ConfigurationManager.AppSettings["AGE"]);

    配置文件App.config就在项目的根路径,可以随时手动修改内容,也可以在项目中用代码动态修改。

    二、写入配置文件:

    System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    config.AppSettings.Settings["NAME"].Value = "YourName";
    config.Save(ConfigurationSaveMode.Modified);
    ConfigurationManager.RefreshSection("appSettings"); // 重新加载新的配置文件 
    

    重要参考:

    http://stackoverflow.com/questions/4216809/configurationmanager-doesnt-save-settings

    坑点:无法写入/保存配置文件?

    • 在写入配置文件后,可以看到bin/Debug/YourProjectName.exe.config已经被修改了,但是关闭调试再运行一次时,会发现配置文件又被还原了,即之前的修改无效?!

    原因在上面的参考链接中有提及:
    这里写图片描述

    就是说,代码中写入配置文件并运行Debug时,bin/Debug/YourProjectName.exe.config已经被修改。但是当你再运行一次Dubug时,这个bin/Debug/YourProjectName.exe.config的内容是从源码中获取的,因为源码中的App.config并没有被修改,所以bin/Debug/YourProjectName.exe.config又被覆盖为原来的数据。
    即是说,按照之前的写入配置文件的代码是好用的,如果想测试这个写入配置文件的功能,可以运行bin/Debug/YourProjectName.exe来测试,而不是再VS中按F5运行源码来测试!

  • 相关阅读:
    ICommand接口
    Binding自动侦听
    WPF比较两个随机数大小写,利用MVVM思想实现
    从一个ListBox中的元素点击导入另一个ListBox元素中
    利用FluidMoveBehavior制作出手机通讯录平滑的效果
    从零开始学习Gradle之三---多项目构建
    用Gradle 构建你的android程序
    iPhone/iPad调整事件递交
    iOS8-Sampler
    iOS8-Sampler
  • 原文地址:https://www.cnblogs.com/guxin/p/csharp-how-to-read-and-write-config-file.html
Copyright © 2020-2023  润新知