2010-02-04 19 views
8

Ho un'applicazione Windows che utilizza un assembly che memorizza alcune impostazioni di configurazione nelle impostazioni dell'applicazione predefinite.Perché le impostazioni utente persistenti non sono caricate?

Le impostazioni possono essere modificate in fase di esecuzione e vengono mantenute in tal modo:

Properties.Settings.Default.SelectedCOMPort = options.SelectedCOMPort; 
Properties.Settings.Default.Save(); 

Le impostazioni vengono salvate in modo corretto e confermo questo guardando il file user.config salvato nella directory dell'applicazione utenti Ad es

C:\Documents and Settings\e399536\Local Settings\Application Data\MyCompany\MyTool 

Tuttavia quando lo strumento viene chiuso e quindi riavviato tutte le impostazioni vengono caricate con i loro valori predefiniti.

Il controllo del file user.config una volta che l'applicazione è in esecuzione conferma che le impostazioni sono ancora come salvate.

Le impostazioni vengono caricate così:

options.SelectedCOMPort = Properties.Settings.Default.SelectedCOMPort; 

Perché sono le impostazioni di default in uso e non quelli salvati?

Ho perso qualcosa ??

@ Tenaciouslmpy Le impostazioni vengono caricate durante il costruttore dell'assieme, che viene caricato nell'evento di caricamento del modulo dell'assieme principale.

@ Austin Questa è un'app standalone che eseguo il debug in Visual Studio.

+0

Puoi pubblicare il codice in cui stai caricando le impostazioni della stringa? –

+0

Quando si caricano le impostazioni? Quale evento nel ciclo di vita della Forma? – keyboardP

+0

Si tratta di un'installazione stand-alone o si sta eseguendo dall'IDE? –

risposta

10

Se si sta eseguendo la ricompilazione dell'applicazione tra le esecuzioni, si noti che considererà una nuova versione dell'app e sarà non caricare automaticamente le impostazioni per utente. È necessario chiamare Settings.Default.Upgrade in questa situazione.

Un modo per eseguire questa operazione solo quando necessario è aggiungere un'impostazione di NeedsUpgrade (valore True) alle impostazioni per utente predefinite dell'applicazione. All'avvio dell'app, controlla se NeedsUpgrade è true. In tal caso, chiama Upgrade, imposta NeedsUpgrade su False e salva le impostazioni. La prossima volta che la versione dell'app cambierà, NeedsUpgrade verrà reimpostato su True e richiamerai automaticamente l'aggiornamento per ripristinare le impostazioni utente esistenti.

Assicurati di aver impostato Aggiornamento richiesta dopo durante l'aggiornamento, altrimenti verrà cancellato quando le impostazioni verranno aggiornate.

if (Settings.Default.NeedsUpgrade) 
{ 
    Settings.Default.Upgrade(); 
    Settings.Default.NeedsUpgrade = false; 
    Settings.Default.Save(); 
} 
+0

Non sto ricompilando comunque sto eseguendo il debugging dell'IDE che sembra fare la stessa cosa. In ogni caso il suggerimento Upgrade() ha risolto il problema. Saluti. – Kildareflare

+0

Ho riscontrato questo problema con la sessione di debug sull'IDE (VS.2015) Le impostazioni sono ripristinate ai valori predefiniti.Ho implementato l'hint di NeedUpgrade ma il problema persiste. –

+1

L'ho appena testato in VS 2015 Community e funziona ancora per me. Nota che sembra che il comportamento sia un po 'più intelligente in questi giorni; non resetterà NeedUpgrade su true a meno che la versione dell'assembly non cambi; solo la ricostruzione dell'applicazione non lo farà più. – technophile

2

Sembra che si stia eseguendo il debug dell'applicazione da Visual Studio ogni volta che si avvia una nuova sessione si inizia con i dati predefiniti.

Se visualizzi questo con una versione installata, suppongo che in realtà non stai utilizzando i valori di stringa quando pensi di esserlo.

+0

Ah, sarebbe così, Cheers. – Kildareflare

Problemi correlati