Konfigurations-Datei wird wieder zurückgesetzt nach dem Beender der Applikation

30/06/2008 - 17:44 von M.Erlinger | Report spam
Hallo
ich hab eine Frage zu den Konfigurations-Dateien meiner
WinForm-Applikation - ich bin gerade am Testen, verschiedene
Konfig-Datei-Eintràge anzulegen, das sich dymanisch halten kann. Daher habe
ich meine app.config im VS-Projekt nur folgendermaßen definiert:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
</appSettings>
</configuration>

wenn ich jetzt zum Beispiel beim Close-Event der App. folgendes ausführe:

System.Configuration.Configuration config ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

string sKey = string.Empty;

for (int i = 0; i < iZusatzFarben.Length; i++)
{
sKey = "MyColor_" + i.ToString();

if (config.AppSettings.Settings[sKey] == null)
config.AppSettings.Settings.Add(sKey,
iZusatzFarben[i].ToString());
else
config.AppSettings.Settings[sKey].Value =
iZusatzFarben[i].ToString();
}

config.Save();

...dann habe ich bis zum Beenden der Applikation die Eintràge im Konfig-File
stehen. Beende ich nun die WinForm-Applikation, ist das Konfig-File wieder
im Original-Zustand, und das was gerade noch da war, wieder weg.

Meine Frage - wieso ist das so ??
und - wie muss ich vorgehen, um Eintràge dynamisch in das Konfig-File zu
schreiben, die ich dann auch beim nàchsten Start der App. wieder zur
Verfügung habe.

Danke und Grüße
Michael
 

Lesen sie die antworten

#1 Frank Dzaebel
30/06/2008 - 21:33 | Warnen spam
Hallo Michael,

es ist nicht sauber in die app.config zu schreiben, bzw.
diese zur Laufzeit manipulieren zu wollen. Das macht man
ggf. in Usereinstellungen. In einem normalen
Nicht-Admin-Szenario hàtte der User eh gar keine
Rechte da hineinzuschreiben.



Beende ich nun die WinForm-Applikation, ist das Konfig-File wieder im
Original-Zustand, und das was gerade noch da war, wieder weg.
Meine Frage - wieso ist das so ??



weil standardmàssig die app.config aus dem Projekt-
Verzeichnis beim Erstellen ins Ausgabeverzeichnis
kopiert wird ;-)
Ausserdem musst Du zwischen der app.config im
Projekt-, der ***.exe.config im Debug- und Release-
Verzeichnis sowie den vshost.exe.config und der
der "user.config" unterscheiden °_°





und - wie muss ich vorgehen, um Eintràge dynamisch in das Konfig-File zu
schreiben, die ich dann auch beim nàchsten Start der App. wieder zur
Verfügung habe.



wie gesagt, nimm die user.config. Die Datei liegt hier:

public static class Util
{
public static void UserConfigTestweiseAnsehen()
{
// Verweise: System.Configuration.dll einbinden
Configuration config = ConfigurationManager.
OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
Process.Start(config.FilePath);
}
}

[Typsichere Settings mit eigenen Array-Typen]
http://dzaebel.net/SettingsExample2.htm


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen