/ / Zmień appconfig w środowisku wykonawczym - c #, winformy

Zmień appconfig w środowisku wykonawczym - c #, winforms

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 № 1

Dodawanie 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.