Schreiben appSettings in einer externen Datei
Habe ich eine config-Datei-app.exe.config und appSettings-Abschnitt hat so etwas wie dieses:
<configuration>
<appSettings configSource="app.file.config" />
</configuration>
app.Datei.config-Datei hat, so etwas wie dieses:
<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
<add key="var1" value="value 1" />
<add key="var2" value="value 2" />
<add key="var3" value="value 3" />
</appSettings>
Ich Bearbeiten müssen, var1, var2 und var3 an Laufzeit und ich habe den code wie folgt:
Configuration config = ConfigurationManager.OpenExeConfiguration("...path\app.exe);
config.AppSettings.SectionInformation.ConfigSource = "app.file.config";
config.AppSettings.Settings["var1"].Value = "value 11";
config.AppSettings.Settings["var2"].Value = "value 22";
config.AppSettings.Settings["var3"].Value = "value 33";
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
Wenn ich config.Speichern.... die Datei app.Datei.config hat einen appSettings-Knoten mit einem Attribut "Datei". Dieses Attribut hat den Wert von app.Datei.config
<appSettings file="app.file.config">
<add key="var1" value="value 1" />
<add key="var2" value="value 2" />
<add key="var3" value="value 3" />
</appSettings>
Nun, wenn ich versuche, das laden der config-Datei habe ich eine Ausnahme mit der Meldung "Unbekanntes Attribut 'file'. Beachten Sie, dass Attribut-Namen sind case-sensitive." im app.Datei.config.
Wenn ich die Datei löschen, Attribut manuell in der Konfigurationsdatei richtig geladen ist.
Irgendwelche Ideen?
Wie Sie vermeiden können, zu schreiben, Datei-Attribut, wenn ich save config Dateien.
Dank
Kenny, ich verstehe dich nicht. Bitte, können Sie erklären, mehr im detail?
was passiert, wenn Sie entfernen Sie Ihre code "config.AppSettings.SectionInformation.ConfigSource = "app.Datei.config";"
Es ist ein Tippfehler in den ersten tag Recht? denn Sie schließen es.
Dank Vitor Canova. Es war ein Tippfehler
InformationsquelleAutor J19 | 2014-12-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
mit einer externen config-Datei ist transparent für die Anwendung,
dieser Teil ist o.k
und auch dies:
ändern Sie Ihren code wie folgt Aussehen:
bezieht eine externe Konfigurations-Datei ist transparent für die Anwendung,
so dass Sie nicht haben, um direkt aufrufen. Sie können die Standardeinstellung verwenden "AppSetting" in den Konfiguration-manager.
Glück
InformationsquelleAutor Tomer Klein
WARNUNG: configSource ist nicht die richtige Antwort, wie bereits in anderen Antworten.
Jetzt für die schlechte Nachricht... keiner der externen Dateien speichern wenn Sie den Wert aktualisieren Lesen von ConfigurationManager.
Setup:
Kommandozeilen-Projekt
app.config-Datei:
AppSettings.config-Datei mit "Copy to Output Directory'= 'Kopieren'
Programm.cs:
TEST1 - appsettings überschrieben durch die sub-config "configSource" - Datei
Vereinbaren:
Ändern, app.config 'configSource'
Handlung: RunProject
Geltend machen: - Ausnahme Ausgelöst: "die Strecken müssen nur einmal pro config-Datei".
TEST2 - appsettings überschrieben durch die sub-config "configSource" - Datei
Vereinbaren:
Ändern, app.config 'Datei'
Handlung: RunProject
Behaupten:
config.AppSettings.Einstellungen["test"].Wert = ÜBERSCHRIEBEN
config.AppSettings.Einstellungen["testExternalOnly"].Wert = INITIALSTATE
Jetzt für die schlechte Nachricht... keiner der externen Dateien zu speichern, wenn Sie
Den AppSettings wird nur speichern Sie in der .exe.config-Datei, und dann, wenn Sie schließen und öffnen Sie Ihre config die Werte überschrieben werden, indem die externe Datei Werte.
"TEST3" - Werte in Externe Dateien werden nicht aktualisiert 'config.Speichern'
Setup:
Programm.cs geändert:
Act: Programm Ausführen
Behaupten:
{myExe}.exe.confg die AppSettings-Abschnitt:
AppSettings.config ist unverändert
InformationsquelleAutor OzBob
Habe ich endlich eine Lösung gefunden.
Die Lösung ist zu erklären, dass die config-Datei wie diese:
- Und aus-code
Beachten Sie, dass ich benutze
GetSection("appSettings")
statt
config.AppSettings.Einstellungen
Danke an alle, die helfen, Menschen in StackOverflow.
Hi Christopher Painter, es ist nicht genau das gleiche. In meinem Szenario, der entscheidende Punkt war "AppSettingsSection myAppSettings = config.GetSection("appSettings")". Mit GetSection war die Lösung. Dank Tomer Klein für seine Antwort, aber, für mich, ich brauche ein paar änderungen
ist tatsächlich auf etwas. Ich denke, er will ein update der
app.file.config
statt derapp.exe.config
beim speichern von Einstellungen programmgesteuert. Mindestens das ist, was ich tun wollte und dieconfigSource
- Attribut anstelle desfile
ist genau das, was tut, finden Sie unter stackoverflow.com/questions/6940004/...InformationsquelleAutor J19