zoukankan      html  css  js  c++  java
  • 【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运行源码来测试!

  • 相关阅读:
    疫情在家没事做推荐个学习的目录:怎么从一名码农成为架构师的必看知识点:目录大全(不定期更新)
    教你使用 Swoole-Tracker 秒级定位 PHP 卡死问题
    怎样深入学习php,成为php高手!?
    PHP实现简单RPC
    PHP工作岗位要求
    关于PHP在企业级开发领域的访谈
    未知及待办清单
    siege报告学习
    session&token based auth登录方式描述
    学习JWT
  • 原文地址:https://www.cnblogs.com/guxin/p/csharp-how-to-read-and-write-config-file.html
Copyright © 2011-2022 走看看