locked
FAQs:在运行时如何(更新/插入/移除)配置文件? RRS feed

答案

  • 在运行时在配置文件中插入新值

    我们一般可以用ConfigurationManager来更新应用程序的配置文件。
    下面是原始的App.config文件
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
    <add key="Setting1" value="1" />
        <add key="Setting2" value="2" />
    </appSettings>
    </configuration>

    下面的代码用来在配置文件中加入新的值
    public Form1()
            {
                InitializeComponent();
            }

            private void ShowConfig()
            {
                // 不需要钓鱼OpenExeConfiguraton即可访问读取
                foreach (string key in ConfigurationManager.AppSettings)
                {
                    string value = ConfigurationManager.AppSettings[key];
                    MessageBox.Show(String.Format("Key: {0}, Value: {1}", key, value));
                }
            }

            private void UpdateConfig()
            {
                //打开可执行的 App.Config
                System.Configuration.Configuration config =
                  ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

                //插入新的 Application Setting.
                config.AppSettings.Settings.Add("Setting3", "3");
                // 保存配置文件
                config.Save(ConfigurationSaveMode.Modified, true);
                // 强制加载更新的部分
                ConfigurationManager.RefreshSection("appSettings");
            }

            private void button1_Click(object sender, EventArgs e)
            {
                ShowConfig();
            }

            private void button2_Click(object sender, EventArgs e)
            {
                UpdateConfig();
            }

    在运行时修改配置文件中已存在的值
    因为Configuration.AppSettings属性是只读的,为了修改当前应用城西的设置值,我们必须使用XmlDocument类把配置文件当做XML文档直接修改。

    这是原始的App.config文件:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <appSettings>
    <add key="Setting1" value="1" />
    <add key="Setting2" value="2" />
    </appSettings>
    </configuration>
    这是修改应用程序设置值的代码示例:
    XmlDocument xmlDoc = new XmlDocument();

    xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

    foreach (XmlElement element in xmlDoc.DocumentElement)
    {
        if (element.Name.Equals("appSettings"))
        {
            foreach (XmlNode node in element.ChildNodes)
            {
                if (node.Attributes[0].Value.Equals("Setting1"))
                {
                    node.Attributes[1].Value = "New Value";
                }
            }
        }
    }
    xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

    ConfigurationManager.RefreshSection("appSettings");

    相关的帖子:
    http://social.msdn.microsoft.com/forums/en-US/Vsexpressvcs/thread/0a1fc870-9ad1-4f66-9fc1-8d28cda46a7e/


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月2日 10:41