当前位置:   article > 正文

应用程序配置文件的名称问题

软件 配置文件未命名

    在写C#的时候,有时候需要应用程序配置文件,即 "应用程序名.config",也可为“应用程序名.exe.config”,对于这两种名称,程序在运行时都能够正确读取,假如两者都存在,则优先读取“应用程序名.exe.config”。可以说,对于应用程序的运行,这两个命名没有区别,但是,在其他一些方面,这两个就有一些区别了。

情景一:

    调试时

    进行debug调试的时候,程序只读取“应用程序名.exe.config”这种配置文件,当你的调试目录下有"应用程序名.config"而没有“应用程序名.exe.config”的时候,你读取到的结果将是null,即使你的"应用程序名.config"文件中确实有你读取的那个段的名称。这种结果对于<appSettings>段或者你的自定义段(customSections)都是一样的,所以要注意。

如下图:

    可以看到,appsettingsTest.config里面是有Chinese这个段的,但是section0仍为null。此时只要重命名appsettingsTest.config为appsettingsTest.exe.config即可正常调试。

情景二:

    *.config配置文件的生成

    这种配置文件的生成有两种方法,

一是手动添加

    这样就会自动生成一个名为 App.config的文件在解决方案里面,不要重命名这个文件,然后在生成解决方案的时候,vs会自动复制一个内容一致,名字为“应用程序名.exe.config”的配置文件到程序目录。

另一种生成的方法是用代码生成:

            // Get the application configuration file.
            System.Configuration.Configuration config =
              ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None);

            config.AppSettings.Settings.Add(key, value);

            // Save the configuration file.
            config.Save(ConfigurationSaveMode.Modified);

            // Force a reload of the changed section. This 
            // makes the new values available for reading.
            ConfigurationManager.RefreshSection(sectionName);

    用这种方法,假如开始不存在“应用程序名.exe.config”或者“应用程序名.config”,程序将会自动生成“应用程序名.config”,注意,不是“应用程序名.exe.config”。假如此时再进行debug,调试读取config,将会返回null。

    假如在调试的时候,程序目录下无“应用程序名.config”,也无“应用程序名.exe.config”,此时运行上面代码将出现什么名字的config呢,答案是“应用程序名.vshost.exe.config”,这个文件是临时的,一般会在调试结束之后被自动删除,而且这个名字也无法作为程序正常运行时的配置文件。

 

    所以当你遇到调试读取配置文件时,明明那个段有内容,但仍读到null时,可检查一下config文件的命名。

转载于:https://www.cnblogs.com/TrueElement/archive/2012/04/16/2451895.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/239420
推荐阅读
相关标签
  

闽ICP备14008679号