• .NET修改配置文件


      首先说明,本文参考了这个帖子http://www.cnblogs.com/henw/archive/2012/01/31/2333783.html,进行了一些补充

      简要说来两种方法,一是把config文件当做xml文件处理,这样可以使用DOM,也可以使用linq to xml,下面的代码使用了DOM:

      

    private void SetValue(String AppKey,String AppValue)
            {
                 XmlDocument xDoc=new XmlDocument();
                 xDoc.Load(System.Windows.Forms.Application.ExecutablePath+".config");
                 XmlNode xNode;
                XmlElement xElem1;
                XmlElement xElem2;
                xNode=xDoc.SelectSingleNode("configuration").SelectSingleNode("appSettings");
                xElem1=(XmlElement)xNode.SelectSingleNode("add[@key='"+AppKey+"']");
                if(xElem1!=null)
                xElem1.SetAttribute("value",AppValue);
                else
                {
                    xElem2=xDoc.CreateElement("add");
                    xElem2.SetAttribute("key",AppKey);
                    xElem2.SetAttribute("value",AppValue);
                    xNode.AppendChild(xElem2);
                }
                xDoc.Save(System.Windows.Forms.Application.ExecutablePath+".config");
            }

      第二种就是使用.net提供System.Configuration

      

     private void ChangeConfig()
            {
                Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
                //添加
                cfa.AppSettings.Settings.Add("key", "test2");
                //修改
                cfa.AppSettings.Settings["test"].Value = "test";
                cfa.Save();
            }

      第二种方法更简洁,不过再说下,这两种方法修改的都是程序生成目录下的后缀为.exe.config的文件,我上传一张我的试验项目的生成目录图

      我们要修改的应该是MailFormApp.exe.Config这个文件,而不是项目里的app.config,一些初次接触config的人不了解,可能就会认为这两种方法都无效。

      第一种指定了文件路径,而且是把config文件当文件来处理,调试和直接运行exe都能达到效果。然而使用C#提供的方法就要注意了,由于调试时程序运行在vs里头,vs是程序的宿主,所以直接F5调试的时候其实使用的是MailFormApp.vshost.exe和MailFormApp.vshost.exe.Config,所以是无法修改MailFormApp.exe.Config的。关于.vshost.exe.Config这个文件,经过我测试,调试时是先将.exe.Config文件内容copy到.vshost.exe.Config再读取该文件,所以调试时无法做到修改配置文件。但是如果直接双击运行目标exe,可以发现可以正确修改.exe.Config文件的,所以要注意不要因为在调试发现配置文件没有改误认为该方法无效。另外MailFormApp.vshost.exe只是用来寄宿在vs里头的,无法直接双击运行。

  • 相关阅读:
    全面理解面向对象的 JavaScript
    账号
    移动端 前端框架 amaze ui
    javascript 精典案例分析一览
    前端事件系统(一)
    周总结12
    周总结11
    相比较于其他的同类软件
    团队冲刺第十五天
    团队冲刺第十四天
  • 原文地址:https://www.cnblogs.com/ValiancyHe/p/3277559.html
Copyright © 2020-2023  润新知