Laden...

Konfigurationsdateien ändern

Erstellt von d.gierse vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.713 Views
D
d.gierse Themenstarter:in
115 Beiträge seit 2006
vor 16 Jahren
Konfigurationsdateien ändern

Hallo zusammen,

ich möchte für eine Anwendung die Konfiguration in eine Datei schreiben. Ein Anwender soll die Konfiguration über einen passenden Dialog zur Laufzeit ändern können. Da man die Einträge aus der app.config nicht zur Laufzeit anpassen kann habe ich mir zunächst eine Klasse gemacht, die die aktuelle Konfiguration enthält. Diese Klasse serialisiere ich dann als XML und schreibe sie auf die Platte.

Ist das so der richtige Weg oder gibt es da noch bessere Alternativen ?

Es ist möglich das im LAufe der Zeit neue Felder zur Konfiguration hinzugefügt werden. Wie kann ich dann am geschicktesten eine alte Konfigurationsdatei in das neue Objekt einlesen?

Gruß Dominik

J
3.331 Beiträge seit 2006
vor 16 Jahren

Viele Wege führen nach Rom. Das Problem mit der "nur-Lesen" app.config besteht u.a. darin, dass in einem Programmverzeichnis der normale Anwender keine Rechte zum Speichern erhält. Wie die app.config zur Laufzeit geändert werden kann, wird z.B. in Read/Write App.Config File with .NET 2.0 beschrieben.

Ich benutze für diese Situationen ein Unterverzeichnis MyProgram\Config (parallel zu MyProgram\bin), auf das in der app.config verwiesen wird:

<configuration>
  <configSections>
    <section name="appSettings" 
             type="System.Configuration.AppSettingsSection, System.Configuration, 
                  Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
                  restartOnExternalChanges="false" requirePermission="false" />
  </configSections>
  <appSettings>
    <add key="configpath" value="F:\VS_NET\Client\Config" />
  </appSettings>
</configuration>

In diesem Verzeichnis hat jeder Benutzer Schreibrechte; dort werden alle passenden Dateien gespeichert - auch solche im Xml-Format mit <configuration>, die mit ConfigurationManager.OpenMappedExeConfiguration bearbeitet werden können.

Gruß Jürgen

49.485 Beiträge seit 2005
vor 16 Jahren
D
d.gierse Themenstarter:in
115 Beiträge seit 2006
vor 16 Jahren

Hallo,

ja das neue Konfigurationsmodell kenne ich. Ich bin grade jedoch etwas enttäuscht davon, das ich in dem neuen Modell noch nicht einmal als Administrator aus der Anwendung heraus Werte aus der App.config anpassen kann.

Wenn ich da eine Einstellung für alle Benutzer Treffen will muss ich mir also ein extra Tool machen, mit dem ich meine app.config anpassen kann, weil ich das aus der Anwendung heraus nicht machen kann !?
Schade aber damit steckt man die Arbeit die man am Anfang spart am Ende wieder rein.

Gruß Dominik

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo d.gierse,

als Admin sollte man in der Lage sein, XML-Dateien direkt und ohne spezifisches Tool zu bearbeiten.

herbivore

D
d.gierse Themenstarter:in
115 Beiträge seit 2006
vor 16 Jahren

Hallo,

ja aber wenn ich das Programm an Kunden raus gebe meldet sich der Kunde dann mal als Admin an und macht so ein paar Einstellungen. Der hat aber meist recht wenig Ahnung und Angst vor XML-Dateien. Da würde so ein Dialog helfen, zumal ich da gewisse Kombinationen in den Einstellungen verbieten könnte usw.
Daher bin ich etwas enttäuscht, das das neue Modell sowas nicht leisten kann.

Gruß Dominik

J
3.331 Beiträge seit 2006
vor 16 Jahren

Hallo,

der von mir genannte Artikel unter **CodeProject **Read/Write App.Config File with .NET 2.0zeigt doch, wie man in app.config speichern kann. Nur Standard-Sections (soweit ich mich erinnere: applicationSettings und connectionStrings) sind davon wohl ausgenommen, aber selbst appSettings können bearbeitet werden.

Das sollte doch für einen Admin genügen. Jürgen

D
d.gierse Themenstarter:in
115 Beiträge seit 2006
vor 16 Jahren

Hallo,

ja hatte den Artikel schon gelesen und so mal eingebaut. Genügen tut das schon. aber es wäre halt schöner, wenn ich das über den Designer erstellen könnte und überall typsicher über Properties.Settings.XXX darauf zugreifen könnte. Und vielleicht hätte es ja hier einen gegeben, der in der Sache schlauer ist als ich und dafür ne Lösung gehabt hätte.

Gruß Dominik