Changing App.config at Runtime

后端 未结 4 1973
旧时难觅i
旧时难觅i 2020-12-01 13:29

I\'m writing a test WinForms / C# / .NET 3.5 application for the system we\'re developing and we fell in the need to switch between .config files at runtime, but this is tur

4条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-01 14:20

    UPDATE

    The solution below did not work because XmlDocument does not dispose and it seems some versions of .net do not close correctly when given a file path. The solution (example code in the link) is to open a stream which will do a dispose and pass that stream to the save function.

    A solution is shown here. http://web-beta.archive.org/web/20150107004558/www.devnewsgroups.net/group/microsoft.public.dotnet.xml/topic40736.aspx


    Old stuff below

    Try this:

    Note, I changed to xpath, but it has been a while so I might have gotten the xpath wrong, but in any case you should use xpath and not walk the tree. As you can see it is much clearer.

    The important point is the using statement which will dispose(), which I think was your problem.

    Let me know, good luck.

      public void UpdateAppSettings(string key, string value)
      {
        using (XmlDocument xmlDoc = new XmlDocument())
        {
          xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
          xmlDoc.DocumentElement.FirstChild.SelectSingleNode("descendant::"+key).Attributes[0].Value = value;
          xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
        }
        System.Configuration.ConfigurationManager.RefreshSection("section/subSection");
      }
    

提交回复
热议问题