Speichern und laden der app.config(applicationSettings) zur Laufzeit
Habe ich die gespeicherte Konfiguration von meiner Anmeldung in der app.Konfiguration von Visual Studio ich habe einige application-Taste auf der Registerkarte Einstellungen im Dialogfeld "Projekteigenschaften", dann habe ich diese Taste auf der Anwendungsebene(NICHT auf Benutzer-Ebene).
Visual Studio generiert automatisch die folgende xml-Datei (app.Konfiguration) :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="AleTest.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<AleTest.Properties.Settings>
<setting name="DatabasePath" serializeAs="String">
<value>Test.s3db</value>
</setting>
<setting name="DatabaseUser" serializeAs="String">
<value />
</setting>
<setting name="DatabasePass" serializeAs="String">
<value />
</setting>
</AleTest.Properties.Settings>
</applicationSettings>
</configuration>
Nun will ich speichern und laden der Einstellungen zur Laufzeit, hier ist mein code, die es ermöglichen, um den Wert zu speichern DatabasePath
in der Konfigurationsdatei:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSectionGroup applicationSectionGroup = config.GetSectionGroup("applicationSettings");
ConfigurationSection applicationConfigSection = applicationSectionGroup.Sections["AleTest.Properties.Settings"];
ClientSettingsSection clientSection = (ClientSettingsSection)applicationConfigSection;
//Database Configuration Setting
SettingElement applicationSetting = clientSection.Settings.Get("DatabasePath");
applicationSetting.Value.ValueXml.InnerXml = this.textBoxPath.Text.Trim();
applicationConfigSection.SectionInformation.ForceSave = true;
config.Save();
Das problem ist, dass mit diesem code die neuen Einstellungen nicht geladen von der Anwendung bis ich die Anwendung neu starten; gibt es eine Möglichkeit, um neu zu laden Sie die config-Einstellungen zur Laufzeit?
Möchte ich auch ersetzen Sie den festen Wert den Namen der applicationSettings
Abschnitt (AleTest.Eigenschaften.Einstellungen) mit einem Variablen Wert, gibt es eine variable, die im Rahmen der übernahme dieser Wert (AleTest.Eigenschaften.Einstellungen) ?
- Ich hatte ein anderes problem: das Schreiben in der "applicationSettings" Abschnitt der web.config mithilfe der Configuration-Objekt. Thx für zeigen mir, was zu tun ist. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie, um einen Anruf zu ConfigurationManager.RefreshSection, um die Werte neu zu Lesen von der Festplatte.
Habe ich ein paar tests und hier ist das Ergebnis.
Für auto-generierten Klasse
Settings
den Anruf vonConfigurationManager.RefreshSection("applicationSettings");
nicht, gelten die geänderten Werte für die Mitglieder, die mit gekennzeichnetApplicationScopedSettingAttribute
gilt es für die änderungen in Zukunft Anrufe überConfigurationManager
Mitglieder (und nicht sicherUserScopedSettingAttribute
).Rufen stattdessen
Settings.Default.Reload();
Was Sie wollen, ist zu erreichen in der Lage, durch das erstellen einer benutzerdefinierten ConfigSection die es Ihnen ermöglicht mehr Kontrolle und ermöglicht es Ihnen, den Namen zu ändern. Configuration manager verfügt über eine refresh-Abschnitt, die Ihnen erlauben, die Daten neu laden.
Aleroot code für die Aktualisierung der Werte funktioniert gut.
Trotz der Eigenschaften.Einstellungen nur schreiben (kein set).
Aktualisieren, dieser arbeitete für mich:
ConfigurationManager.RefreshSection("applicationSettings");
Aber ich bin mit diesem Zugriff auf die parameter:
string test = Eigenschaften.Einstellungen.Standard.MyString;
MessageBox.Show("Paramètres/Einstellungen MyString =" + test);