从c#方法更新App.Config

时间:2015-01-02 10:20:55

标签: c# appdomain

我正在尝试使用以下代码从Windows窗体更新我的应用配置

public void UpdateConfigFile(string con)
        {
            //updating config file
            XmlDocument xmlDoc = new XmlDocument();        
            //Loading the Config file
            xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
            if (xmlDoc.DocumentElement != null)
                foreach (XmlElement xElement in xmlDoc.DocumentElement)
                {
                    if (xElement.Name == "connectionStrings")
                    {
                        //setting the coonection string
                        if (xElement.FirstChild.Attributes != null) xElement.FirstChild.Attributes[2].Value = con;
                    }
                }
            //writing the connection string in config file
            xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
        }

不确定我是否遗漏了这一点,但我希望在我的解决方案中看到app.config文件更新。但是代码实际更新了我的C:\ Users \ temp \ Documents \ Visual Studio 2010 \ Projects \ SequoiaToolbox2014MvvM \ SequoiaToolbox2014MvvM \ bin \ Debug \ SequoiaToolbox2014MvvM.vshost.exe.config并且对app.con文件没有影响?

1 个答案:

答案 0 :(得分:1)

您正在从调试模式构建并运行。默认情况下,调试模式使用VSHost .exe和.config来改善启动时间和调试时间。由于它正在更新此临时文件,因此您没有看到预期文件中的更改。

要使其正常工作,您需要执行以下两项操作之一:

  1. 以发布模式运行
  2. 按照此MSDN article
  3. 的指导,关闭此行为
      

    禁用托管流程

         
        
    1. 在Visual Studio中打开可执行项目。不生成可执行文件的项目(例如,类库或服务项目)   没有这个选项。
    2.   
    3. 在“项目”菜单上,单击“属性”。
    4.   
    5. 单击“调试”选项卡。
    6.   
    7. 清除“启用Visual Studio宿主进程”复选框。
    8.         

      当托管过程被禁用时,有几个调试功能   不可用或体验性能下降。欲获得更多信息,   请参阅调试和托管流程。