none
关于ConfigurationManager.OpenExeConfiguration(string exePath) RRS feed

  • 问题

  • 代码如下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Configuration;
    
    namespace ConsoleApplication7
    {
        class opp
        {
            public static Configuration cf;
            static opp()
            {
                try
                {
                    cf = ConfigurationManager.OpenExeConfiguration(@"config\2");
                }
                catch 
                {
                    cf = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                    cf.AppSettings.Settings.Add("sss", "1234");
                    cf.SaveAs(@"config\2.config");
                }
                Console.WriteLine("{0}", cf.AppSettings.Settings["sss"].Value);
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                opp d = new opp();
                Console.ReadKey();
            }
        }
    }


    问题:

    当config文件夹下单独有文件“2.config”时程序会重新创建“2.config”覆盖原来文件,输出"1234";

    当既有文件“2.config”又有文件“2”时程序会读取“2.config”的内容输出"ffff",内容与文件“2”无关;

    当仅有文件“2”时会在opp d = new opp();处引发异常。

    请教原因。

    文件2.config内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <appSettings>
            <add key="sss" value="ffff" />
        </appSettings>
    </configuration>

    文件2内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <appSettings>
            <add key="sss" value="1234" />
        </appSettings>
    </configuration>


    • 已编辑 wqfly 2012年6月19日 8:28
    2012年6月19日 8:27