Benutzer mit den meisten Antworten
vshost.exe.config lädt nicht die korrekten Configs

Frage
-
Hallo zusammen!
Ich arbeite zum ersten mal mit AppConfigs.
Ich speichere in der app.config die Pfade ab, wo bestimmte Files die meine Applikation erzeugt, gespeichert werden. Wenn ich nach Beenden meiner Applikation diese wieder starte, müssen diese Pfade wieder gefunden werden. Wenn ich die app.config aber wieder auslese, steht nichts mehr drin. Das Abspeichern und wieder lesen müsste aber grundsätzlich funktionieren.
Ich habe herausgefunden, dass beim Debugen die Config in der meineApplikation.vshost.exe.config abgelegt wird. Diese wird auch geschrieben, nur nicht dauerhaft gespeichert.
Weiter habe ich herausgefunden, dass wenn ich nicht debuge sondern die meine Applikation direkt über das exe file aus meinem directory heraus starte, die Config nicht in meineApplikation.vshost.exe.config gespeichert wird, sondern in meineApplikation.exe.config. Habe ich das einmal so gemacht, habe ich gemerkt, dass bei einem erneuten Versuch zu debugen von meineApplikation.exe.config die Config in die meineApplikation.vshost.exe.config geladen wird.
Macht das für jemanden Sinn, was ich da geschildert habe? :) Das Problem ist, dass das debugen so extrem umständlich ist.
Die Config schreibe und lese ich über die Methoden der folgenden Klasse, die ich mir zu diesem Zweck geschrieben hab:
public class ConfigurationHelper { public static String ReadAppSettingsKey(String aKey) { try { ConfigurationManager.RefreshSection("appSettings"); } catch { } return ConfigurationManager.AppSettings[aKey]; } public static void WriteAppSettingsKey(String aKey, String aValue) { try { System.Configuration.Configuration aConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); if (ReadAppSettingsKey(aKey) == null)// || ReadAppSettingsKey(aKey).Equals("")) { //ConfigurationManager.AppSettings.Add(aKey, aValue); aConfig.AppSettings.Settings.Add(aKey, aValue); } else { //ConfigurationManager.AppSettings[aKey] = aValue; //ConfigurationManager.AppSettings.Set(aKey, aValue); aConfig.AppSettings.Settings[aKey].Value = aValue; } aConfig.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); } catch { } } }
Ich bin mit meinem Latein langsam am Ende und wäre echt froh über Hilfe. Über google und msdn hab ich auch nichts schlaues herausgefunden.
Danke
Antworten
-
Hallo,
das Problem ist alleine schon, dass die app.config nicht dazu gedacht ist Einstellungen zu speichern, die zur Laufzeit geändert werden. Meist liegt die app.config (app.exe.config) in einem Verzeichnis, wo der normale Benutzer i.d.R. nicht schreiben darf (bsp. "C:\Programme"). Ferner wird die app.config bei jedem Kompilieren/Debuggen neu geschrieben und damit sind Deine Änderungen futsch. Lege Deine Einstellungen daher besser als Benutzereinstellung an, diese werden automatisch im Profil des aktuellen Benutzers gespeichert:
Verwenden von Anwendungseinstellungen und Benutzereinstellungen
http://msdn.microsoft.com/de-de/library/bb397750.aspxWenn Du Einstellungen verwalten möchtest, die für alle Benutzer eines Rechners gültig sind, solltest Du in Erwägung ziehen, diese Einstellungen im Rahmen des Anwendungssetups in der Anwendungskonfiguration zu speichern.
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort vorgeschlagen Elmar BoyeEditor Samstag, 5. November 2011 11:06
- Als Antwort markiert Robert BreitenhoferModerator Montag, 14. November 2011 16:16
Alle Antworten
-
Hallo,
das Problem ist alleine schon, dass die app.config nicht dazu gedacht ist Einstellungen zu speichern, die zur Laufzeit geändert werden. Meist liegt die app.config (app.exe.config) in einem Verzeichnis, wo der normale Benutzer i.d.R. nicht schreiben darf (bsp. "C:\Programme"). Ferner wird die app.config bei jedem Kompilieren/Debuggen neu geschrieben und damit sind Deine Änderungen futsch. Lege Deine Einstellungen daher besser als Benutzereinstellung an, diese werden automatisch im Profil des aktuellen Benutzers gespeichert:
Verwenden von Anwendungseinstellungen und Benutzereinstellungen
http://msdn.microsoft.com/de-de/library/bb397750.aspxWenn Du Einstellungen verwalten möchtest, die für alle Benutzer eines Rechners gültig sind, solltest Du in Erwägung ziehen, diese Einstellungen im Rahmen des Anwendungssetups in der Anwendungskonfiguration zu speichern.
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort vorgeschlagen Elmar BoyeEditor Samstag, 5. November 2011 11:06
- Als Antwort markiert Robert BreitenhoferModerator Montag, 14. November 2011 16:16