/ / Cambia appconfig su runtime - c #, winforms

Cambia appconfig su runtime - c #, winforms

Sto cercando di aggiornare il file appconfig in fase di esecuzione con il seguente codice. Non ricevo un errore ma non aggiorna il mio file di configurazione.

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");

risposte:

3 per risposta № 1

Aggiungere il config.AppSettings.SectionInformation.ForceSave = true; farà il trucco. Dovresti quindi guardare dentro YourProject.vshost.exe.config quando eseguo il debug come ha detto Justin. Le modifiche vengono salvate qui.


1 per risposta № 2

Finché si ha accesso in scrittura al file app.config, dovrebbe funzionare quanto segue.

// 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 per risposta № 3

Non è possibile aggiornare una configurazione, ma è necessario rimuoverla e aggiungerla nuovamente. Ciò ha funzionato per me, anche durante il debug di Visual Studio:

config.AppSettings.Settings.Remove("Username");
config.AppSettings.Settings.Add("Username", "NewValue");
config.Save(ConfigurationSaveMode.Modified);

0 per risposta № 4

Quando devo aggiornare la mia configurazione, devo sempre usare:

config.AppSettings.SectionInformation.ForceSave = true;
//Save config
//Refresh Config section

Altrimenti non aggiorna il file di configurazione per me.

Inoltre, stai eseguendo questo in Visual Studio? Se esegui il debug da Visual Studio, crea delle copie nella cartella bin così nel tuo progetto attuale, non vedrai alcuna modifica alla configurazione a meno che non guardi il file di configurazione nella cartella bindebug.