C#: Lesen und ändern von Einstellungen in einer anderen Anwendung die app.config-Datei

Ich habe eine Reihe von Anwendungen, die miteinander kommunizieren, aber keine dieser Anwendungen haben Ihre eigenen user interface. Ich habe ein system-Konsole-Anwendung, die fungiert als Benutzeroberfläche für das system (d.h. die Menge der Anwendungen, die alle miteinander reden).

Ich würde gerne in der Lage, verwenden Sie die system-console zu Lesen und ändern Sie die Konfiguration der nicht-gui-Anwendungen.

Jede app hat einen app.config-Datei erstellt mit der Visual Studio-Einstellungen GUI. Die Einstellungen sind alle im Geltungsbereich einer Anwendung, die Ergebnisse in einer app.config-Datei, die sieht ein bisschen aus wie diese:

<?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="ExternalConfigReceiver.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
</configSections>
<applicationSettings>
    <ExternalConfigReceiver.Properties.Settings>
        <setting name="Conf1" serializeAs="String">
            <value>3</value>
        </setting>
        <setting name="Conf2" serializeAs="String">
            <value>4</value>
        </setting>
    </ExternalConfigReceiver.Properties.Settings>
</applicationSettings>

Habe ich versucht mit dem folgenden code zum Lesen der Konfiguration-Einstellungen:

System.Configuration.ExeConfigurationFileMap fileMap = new   System.Configuration.ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "PATH_TO_THE_FOLDER\\app.config";

System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(fileMap, System.Configuration.ConfigurationUserLevel.None);

someVariable =  config.AppSettings.Settings["Conf1"];
someVariable2 = config.AppSettings.Settings["Conf2"];

Jedoch bei näherer Betrachtung der config.AppSettings-Objekt, ich finde, es enthält keine Einstellungen.

Was mache ich falsch? Bin ich mit der falschen Methode zum Lesen der config-Datei? Ist diese Methode am besten für eine andere Art von config-Datei?

  • Ich denke du meinst Settings["Conf1"].Value Sie sollten in der Lage sein, etwas zu bekommen, oder bekommst du eine Fehlermeldung ?
  • Wenn dies geschieht, Laufzeit, dann gibt es das Hilfspersonal keine app.config-Datei - config-Datei der Anwendung.exe.config oder was auch immer den Namen main executable
  • Dies ist zwar möglich, würde ich empfehlen, gegen es - es ermöglicht einer Anwendung (die console app) zu brechen anderen Anwendung, indem vermasselt seine Konfiguration, und es zwingt das Verständnis der Art und Weise Ihrer individuellen apps sind so konfiguriert werden, verteilt auf mindestens zwei Orte. Stattdessen würde ich empfehlen, hinzufügen ein "ändere Einstellung" - Nachricht an die app, und die message-handler aktualisieren Sie die Einstellung.
Schreibe einen Kommentar