C#如何修改其他应用程序的配置文件并保存更改?

时间:2017-02-24 18:39:48

标签: c# configuration-files

我知道不止一次问过类似的问题。我读了一些答案,但没有为我的问题找到一个明确的答案。至于这一点,我的两个应用程序说A& B. App A的配置文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key = "Key0" value = "4567" />
    <add key = "Key1" value = "1" />
    <add key = "Key2" value = "2" />
  </appSettings>
</configuration>

App B尝试修改&#34; Key0&#34; App A配置文件:

namespace ModifyOtherConfig
{
    public partial class Form1 : Form
    {
        string otherConfigFilePath;
        public Form1()
        {
            InitializeComponent();
        }

        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
            fileMap.ExeConfigFilename = @"c:\users\om606\documents\visual studio 2015\projects\csharptesting\csharptesting\bin\debug\csharptesting.exe";
            Configuration otherConfig = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);


            string otherSetting = otherConfig.AppSettings.Settings["Key0"].Value;
            MessageBox.Show(otherSetting);
            otherSetting = "098";
            MessageBox.Show(otherSetting);
            otherConfig.SaveAs(fileMap.ExeConfigFilename, ConfigurationSaveMode.Full);
        }
    }
}

当我尝试运行此代码时,出现以下错误:

未处理的类型&#39; System.Configuration.ConfigurationErrorsException&#39;发生在System.Configuration.dll中 附加信息:根级别的数据无效。第1行,第1位。

我做错了什么?我想念一些非常明显的东西吗?如果有人能指出我正确的方向,我会很感激。

1 个答案:

答案 0 :(得分:2)

哦,您已将fileMap.ExeConfigFilename指向.exe,将其更改为指向.config文件。这就是你看到xml错误的原因。

fileMap.ExeConfigFilename = @"c:\users\om606\documents\visual studio 2015\projects\csharptesting\csharptesting\bin\debug\csharptesting.exe.config";

对于您的其他问题,请执行:

otherConfig.AppSettings.Settings.Remove("Key0");
otherConfig.AppSettings.Settings.Add("Key0", "098");

然后保存。