Condividi tramite


Panoramica delle impostazioni dell'applicazione

Questo articolo illustra come creare e archiviare i dati delle impostazioni per conto dell'applicazione e degli utenti.

La funzionalità Impostazioni applicazione di Windows Form semplifica la creazione, l'archiviazione e la gestione delle preferenze personalizzate dell'applicazione e dell'utente nel computer client. Con le impostazioni dell'applicazione Windows Form, è possibile archiviare non solo i dati dell'applicazione, ad esempio le stringhe di connessione del database, ma anche i dati specifici dell'utente, ad esempio le preferenze dell'applicazione utente. Usando Visual Studio o codice gestito personalizzato, è possibile creare nuove impostazioni, leggerle e scriverle su disco, associarle alle proprietà nei moduli e convalidare i dati delle impostazioni prima del caricamento e del salvataggio.

Le impostazioni dell'applicazione consentono agli sviluppatori di salvare lo stato nell'applicazione usando codice personalizzato molto piccolo ed è una sostituzione delle proprietà dinamiche nelle versioni precedenti di .NET Framework. Le impostazioni dell'applicazione contengono molti miglioramenti rispetto alle proprietà dinamiche, che sono di sola lettura, con associazione tardiva e richiedono una programmazione più personalizzata. Le classi di proprietà dinamiche sono state mantenute in .NET Framework 2.0, ma sono solo classi shell che avvolgono sottilmente le classi delle impostazioni applicative.

Che cosa sono le impostazioni dell'applicazione

Le applicazioni Windows Form richiedono spesso dati critici per l'esecuzione dell'applicazione, ma che non si desidera includere direttamente nel codice dell'applicazione. Se l'applicazione usa un servizio Web o un server di database, è possibile archiviare queste informazioni in un file separato, in modo da poterle modificare in futuro senza ricompilare. Analogamente, le applicazioni potrebbero richiedere l'archiviazione di dati specifici per l'utente corrente. La maggior parte delle applicazioni, ad esempio, ha preferenze utente che personalizzano l'aspetto e il comportamento dell'applicazione.

Le impostazioni dell'applicazione rispondono a entrambe le esigenze fornendo un modo semplice per archiviare le impostazioni con ambito applicazione e con ambito utente nel computer client. Usando Visual Studio o un editor di codice, si definisce un'impostazione per una determinata proprietà specificando il nome, il tipo di dati e l'ambito (applicazione o utente). È anche possibile inserire impostazioni correlate in gruppi denominati per semplificare l'uso e la leggibilità. Una volta definite, queste impostazioni vengono salvate in modo permanente e ricaricate automaticamente in memoria durante il tempo di esecuzione. Un'architettura collegabile consente di modificare il meccanismo di persistenza, ma per impostazione predefinita viene usato il file system locale.

Le impostazioni dell'applicazione funzionano salvando i dati come XML in diversi file di configurazione (.config), a seconda che l'impostazione sia con ambito applicazione o ambito utente. Nella maggior parte dei casi, le impostazioni con ambito applicazione sono di sola lettura; perché sono informazioni sul programma, in genere non sarà necessario sovrascriverle. Al contrario, le impostazioni con ambito utente possono essere lette e scritte in modo sicuro in fase di esecuzione, anche se l'applicazione viene eseguita con attendibilità parziale. Per altre informazioni sull'attendibilità parziale, vedere Security in Windows Form Overview.

Le impostazioni vengono archiviate come frammenti XML nei file di configurazione. Le impostazioni con ambito applicazione sono rappresentate dall'elemento <applicationSettings> e in genere vengono inserite in 'app.exe.config, dove 'app è il nome del file eseguibile principale. Le impostazioni con ambito utente sono rappresentate dall'elemento e vengono inserite in user.config. È necessario distribuire il file.exe.config dell'app con l'applicazione; L'architettura delle impostazioni creerà il file user.config su richiesta la prima volta che l'applicazione salva le impostazioni per tale utente. Puoi anche definire un blocco <userSettings> all'interno dell'app .exe.config per fornire valori predefiniti per le impostazioni con ambito per utente.

I controlli personalizzati possono anche salvare le proprie impostazioni implementando l'interfaccia IPersistComponentSettings, che espone il metodo SaveSettings. Il controllo ToolStrip Windows Form implementa questa interfaccia per salvare la posizione delle barre degli strumenti e degli elementi della barra degli strumenti tra le sessioni dell'applicazione. Per altre informazioni sui controlli personalizzati e sulle impostazioni dell'applicazione, vedere Impostazioni applicazione per i controlli personalizzati.

Dove sono archiviate le impostazioni a livello utente

Il provider predefinito, LocalFileSettingsProvider, archivia le impostazioni con ambito utente nella cartella LocalApplicationData. Se la cartella non è disponibile, viene utilizzata la cartella ApplicationData. Viene creata una sottocartella specifica dell'app per archiviare il file delle impostazioni a livello utente. Il nome di questa cartella si basa su tre attributi relativi all'assembly principale dell'app:

  • L'assemblaggio CompanyName.
  • Valore con hash basato su due elementi di informazioni:
    • L'assemblaggio FriendlyName. Se FriendlyName non è disponibile, viene usato il ProductName.
    • Il StrongName dell'assembly, se disponibile, altrimenti viene utilizzato il percorso assoluto alla cartella dell'assembly.
  • Stringa AssemblyName.Version.

Se uno dei dettagli di assemblaggio precedenti cambia, le impostazioni dell'utente precedenti vengono perse perché viene generato un nuovo nome per la sottocartella. Ad esempio, se viene rilasciata una nuova versione dell'app e il valore AssemblyName.Version è diverso da quello della versione precedente, cambia il nome della sottocartella usata per archiviare le impostazioni con ambito utente. Se le impostazioni utente devono essere persistenti tra le versioni dell'app, creare un provider di impostazioni personalizzate. Per altre informazioni, vedere Custom Settings Providers.

Limitazioni delle impostazioni dell'applicazione

Non è possibile usare le impostazioni dell'applicazione in un'applicazione non gestita che ospita .NET Framework. Le impostazioni non funzioneranno in ambienti come i componenti aggiuntivi di Visual Studio, C++ per Microsoft Office, il controllo dell'hosting in Internet Explorer o i componenti aggiuntivi e i progetti di Microsoft Outlook.

Attualmente non è possibile eseguire l'associazione ad alcune proprietà in Windows Form. L'esempio più importante è la proprietà ClientSize, poiché l'associazione a questa proprietà causerebbe un comportamento imprevedibile in fase di esecuzione. In genere è possibile risolvere questi problemi salvando e caricando queste impostazioni a livello di codice.

Le impostazioni dell'applicazione non hanno funzionalità predefinite per la crittografia automatica delle informazioni. Non archiviare mai informazioni correlate alla sicurezza, ad esempio le password del database, in testo non crittografato. Se si desidera archiviare tali informazioni riservate, lo sviluppatore dell'applicazione è responsabile della sicurezza. Se vuoi archiviare le stringhe di connessione, ti consigliamo di usare la sicurezza integrata di Windows e non ricorrere alle password hardcoded nell'URL. Per ulteriori informazioni, vedere Sicurezza dell'accesso al codice e ADO.NET.

Introduzione alle impostazioni dell'applicazione

Se si usa Visual Studio, è possibile definire le impostazioni all'interno di Progettazione Windows Form usando la proprietà (ApplicationSettings) nella finestra Proprietà. Quando si definiscono le impostazioni in questo modo, Visual Studio crea automaticamente una classe wrapper gestita personalizzata che associa ogni impostazione a una proprietà di classe. Visual Studio si occupa anche dell'associazione delle impostazioni a una proprietà di un form o di un controllo, in modo che le impostazioni del controllo vengano ripristinate automaticamente quando il form viene visualizzato e salvate automaticamente quando il form viene chiuso.

Se si vuole un controllo più dettagliato sulle impostazioni, è possibile definire la classe wrapper delle impostazioni delle applicazioni personalizzate. Questa operazione viene eseguita derivando una classe da ApplicationSettingsBase, aggiungendo una proprietà che corrisponde a ogni impostazione e applicando attributi speciali a queste proprietà. Per informazioni dettagliate sulla creazione di classi wrapper, vedere architettura delle impostazioni dell'applicazione .

È anche possibile utilizzare la classe Binding per associare le impostazioni a livello di codice alle proprietà nei moduli e nei controlli.

Vedere anche