c#读写App.config,ConfigurationManager.AppSettings 不生效的解决方法

2019-12-26 13:37:07王振洲
  • //一定要记得保存,写不带参数的config.Save()也可以  config.Save(ConfigurationSaveMode.Modified); 
  • //刷新,否则程序读取的还是之前的值(可能已装入内存)  System.Configuration.ConfigurationManager.RefreshSection("appSettings"); 
  •  

     

      需要注意的是:

    1、根据并不存在的Key值访问<add>元素,甚至使用remove()方法删除不存在的元素,都不会导致异常,前者会返回null。
    2、add已经存在的<add>元素也不会导致异常,而是concat了已有的Value和新的Value,用","分隔,例如:"olldvalue,newvalue"。
    3、在项目进行编译后,在运行目录binDebuge文件下,将出现两个配置文件,一个名为“ProjectName.EXE.config”,另一个名为“ProjectName.vshost.exe.config”。第一个文件为项目实际使用的配置文件,在程序运行中所做的更改都将被保存于此;第二个文件其实为原代码中“App.config”的同步文件,在程序运行中不会发生更改。
    4、特别注意大小写(XML文件是区分大小写的),例如appSettings配置节。
    5、可能有读者会想到,既然app.config是标准XML,当然也可以用操纵一般XML文件的方法来读写。这当然是可以的!具体可以看文末参考文献[2]和[3]中的代码,只不过我认为这样就失去了VS提供app.config文件的意义了,还不如自己定义一个配置文件方便。
     
    本文只是粗略地讲了app.config文件中appSettings配置节的访问方法,connectionStrings配置节的操作基本是类似的,也可以自定义配置节。这些高级的用法可以自己体会,VS对app.config这个配置文件的管理还是很强大的,例如WinForm应用程序的Settings设置(可以在IDE中或者通过代码访问)其实也是利用了app.config文件。

    c#读写App.config,ConfigurationManager.AppSettings 不生效的解决方法

     

    参考资料:

    [1] Read/Write App.Config File with .NET 2.0(这篇文章从.NET 1.0 过渡到 2.0,因此额外讲了很多两个版本间的变化)

    [2] C#读写app.config中的数据(作者不知从哪儿复制的一堆相关内容的大杂烩,也没好好整理,不过还蛮有用)