2012-07-15 6 views
10

Desidero salvare alcune impostazioni su un file di configurazione per uso futuro. sto cercando di utilizzare il codice regolare che vedo su tutti i tutorial -C# - la configurazione dell'app non cambia

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
config.AppSettings.Settings["username"].Value = m_strUserName; 

// I also tried - 
//config.AppSettings.Settings.Remove("username"); 
//config.AppSettings.Settings.Add("username", m_strUserName); 

config.Save(ConfigurationSaveMode.Modified); 
ConfigurationManager.RefreshSection("appSettings"); 

ora - vedo che in fase di esecuzione - il file "... vshost.exe.config" on "Debug" la cartella è cambia, dado quando chiudo la mia applicazione - tutte le modifiche sono cancellate. Cosa posso fare?

risposta

28

Per testare utilizzando il file di configurazione del file exe normale deselezionare la casella "Abilita il processo di hosting di Visual Studio" nella scheda "Debug" nel menu delle proprietà del progetto. Ciò farà sì che lo studio visivo non usi più il file vshost.exe per l'avvio e verrà utilizzato il file di configurazione corretto.

enter image description here

+0

+1 Buona risposta Scott, ma preferisco evitare di scherzare con questo perché tendo a dimenticare questa bandierina ea volte le conseguenze sono molto fastidiose. http://blogs.msdn.com/b/dtemp/archive/2004/08/17/215764.aspx – Steve

+0

Che differenza c'è tra vshost e il file reale? perché è così importante usare la bandiera? – TamarG

+0

Leggi il link steve fornito nel suo commento, spiega a cosa serve il processo vshost. –

9

Quando si distribuisce l'applicazione agli utenti finali, non esiste vshost.config.
Le modifiche verranno applicate al file exe.config. Quindi non devi preoccuparti di questo.

Quando si crea l'applicazione in una sessione di debug, il file app.config, presente nel progetto, viene copiato nella directory di output. Quindi questo file di configurazione viene copiato anche in vshost.config. In questo modo il contenuto di app.config sovrascrive tutte le modifiche apportate durante una sessione di debug nel file vshost.exe.config.

Tuttavia, lasciatemi dire che scrivere questo tipo di informazioni in una configurazione dell'applicazione è una cattiva pratica. Il file di configurazione dovrebbe essere usato solo per memorizzare la configurazione permanente che di solito non cambia durante la vita della tua applicazione. Le impostazioni di connessione, ad esempio, sono informazioni valide da archiviare perché normalmente non le si modifica e non si desidera codificarle.

Le impostazioni come il nome utente devono invece utilizzare user.config. Questa configurazione è per utente/per-app e consente l'accesso in lettura/scrittura.

+0

ma devo eseguire il debug ora ... e perché il vshost.config non salva le modifiche? – TamarG

+0

@tamarg Puoi testare la risposta di Steve aprendo la cartella '\ bin' nella cartella' \ Debug' e eseguendo manualmente l'eseguibile. È necessario ricordare che il processo di debug inizia sempre dagli stessi file temporanei. –

+0

Anche io ho risposto, ma io do +1 a questo! –

Problemi correlati