2017-02-24 5 views
1

Ich weiß, dass ähnliche Frage vor mehr als einmal gestellt wurde. Ich habe einige der Antworten gelesen, habe aber keine klare Antwort für mein Problem gefunden. Bis zu dem Punkt, sagen I zwei Anwendungen A & B. App A eine Konfigurationsdatei aufweist, wie folgt:C# Wie ändere ich die Konfigurationsdatei einer anderen Anwendung und speichere die Änderung?

<?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 versucht "Key0" von App eine Konfigurationsdatei zu ändern:

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); 
     } 
    } 
} 

Bei ich versuche, diesen Code ich folgende Fehlermeldung erhalten auszuführen:

Eine nicht behandelte Ausnahme des Typs ‚System.Configuration.ConfigurationErrorsException‘ aufgetreten in System.Configuration.dll Weitere Informationen: Daten am ro ot level ist ungültig. Linie 1, Position 1.

Was mache ich falsch? Vermisse ich etwas sehr Offensichtliches? Ich würde mich freuen, wenn mir jemand in die richtige Richtung zeigen könnte.

+0

Es klingt, als hätte die Datei keine richtige XML drin – Jonesopolis

Antwort

2

Oh, du zeigst deine fileMap.ExeConfigFilename auf die .exe, ändere sie stattdessen auf die .config Datei. Deshalb sehen Sie den XML-Fehler.

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

für Ihre andere Frage, tun:

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

dann speichern Sie es.

+0

Sollte es nicht tatsächlich "csharptesting.exe.config" sein – Kevin

+0

ja. guter Ruf. Zeigen Sie einfach auf die Dateiendung in .config darnit – Jonesopolis

+0

Okay, das Hinzufügen von .config wurde den Fehler beseitigt, aber es speichert immer noch nicht den Wert "098" in der "Key0" -App Eine Konfigurationsdatei. Ideen? Danke sowieso für das oben genannte. – cott

Verwandte Themen