Próbuję zaktualizować plik appconfig w czasie wykonywania następującym kodem. Nie dostaję błędu, ale nie aktualizuje mojego pliku konfiguracyjnego.
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
string oldValue = config.AppSettings.Settings["Username"].Value;
config.AppSettings.Settings["Username"].Value = "NewValue";
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
Odpowiedzi:
3 dla odpowiedzi № 1Dodawanie config.AppSettings.SectionInformation.ForceSave = true;
da rade. Powinieneś wtedy zajrzeć YourProject.vshost.exe.config
podczas debugowania, jak powiedział Justin. Modyfikacje są tam zapisywane.
1 dla odpowiedzi nr 2
Tak długo, jak masz dostęp do zapisu do pliku app.config, powinny działać następujące elementy.
// To Save
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["Username"].Value = "NewValue";
config.AppSettings.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);
// To Refresh
ConfigurationManager.RefreshSection("appSettings");
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
1 dla odpowiedzi nr 3
Nie możesz zaktualizować konfiguracji, musisz ją usunąć, a następnie dodać ponownie. Działa to dla mnie, w tym podczas debugowania w Visual Studio:
config.AppSettings.Settings.Remove("Username");
config.AppSettings.Settings.Add("Username", "NewValue");
config.Save(ConfigurationSaveMode.Modified);
0 dla odpowiedzi nr 4
Kiedy muszę zaktualizować moją konfigurację, zawsze muszę użyć:
config.AppSettings.SectionInformation.ForceSave = true;
//Save config
//Refresh Config section
W przeciwnym razie nie zaktualizuje pliku konfiguracyjnego dla mnie.
Czy uruchamiasz to w Visual Studio? Jeśli debugujesz z Visual Studio, tworzy kopie w folderze bin, więc w twoim rzeczywistym projekcie, nie zobaczysz żadnych zmian w konfiguracji, chyba że spojrzysz na plik konfiguracyjny w folderze bindebug.