Usare Visual C# per archiviare e recuperare informazioni personalizzate da un file di configurazione dell'applicazione
Questo articolo illustra come archiviare informazioni personalizzate da un file di configurazione che è possibile recuperare in un secondo momento durante l'esecuzione dall'applicazione associata. È utile quando è necessario definire i dati associati a un'applicazione.
Nota
Il codice in questo articolo è destinato a .NET Framework 2.0 e versioni successive. Per conoscere le versioni specifiche a cui si applica la ConfigurationManager
classe, vedere la sezione Si applica a .
Versione originale del prodotto: Visual C#
Numero KB originale: 815786
Requisiti
L'elenco seguente illustra l'hardware e il software consigliati necessari:
- Microsoft Windows
- Visual C#
Questo articolo presuppone che si abbia familiarità con gli argomenti seguenti:
- Extensible Markup Language (XML)
- File di configurazione .NET
Creare un'applicazione console che legge un file di configurazione
È possibile archiviare le impostazioni dell'applicazione nel file di configurazione associato all'applicazione. I file di configurazione vengono salvati in formato XML.
Gli System.Configuration
spazi dei nomi e System.Collections.Specialized
in .NET Framework includono le classi necessarie per recuperare informazioni da un file di configurazione dell'applicazione .NET durante l'esecuzione.
Per creare un'applicazione console che legge il contenuto di un file di configurazione associato durante l'esecuzione, seguire questa procedura:
Avviare Visual Studio .NET o Visual Studio.
Scegliere Nuovo dal menu Filee quindi selezionare Progetto.
selezionare Visual C# in Tipi di progetto e quindi selezionare Applicazione console in Modelli. Assegnare al progetto il nome ConConfig. Per impostazione predefinita, Visual C# crea una classe denominata Program.
Nota
In Visual Studio .NET selezionare Progetti Visual C# in Tipi di progetto e quindi selezionare Applicazione console in Modelli. Assegnare al progetto il nome ConConfig. Per impostazione predefinita, Visual C# crea una classe denominata Class1.
Assicurarsi che la finestra Esplora soluzioni sia visibile. Se non è visibile, premere la combinazione di tasti CTRL+ALT+L.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto, scegliere Aggiungi e quindi selezionare Nuovo elemento.
Nell'elenco Aggiungi nuovo elemento selezionare File XML.
Nella casella di testo Nome digitare App.config e quindi selezionare Aggiungi.
È possibile usare un file di configurazione dell'applicazione per raccogliere le impostazioni dell'applicazione personalizzate salvate in formato chiave/valore. È possibile includere
<add>
elementi nella<appSettings>
sezione di un file di configurazione associato. Ogni coppia chiave/valore ha un<add>
elemento. Un<add>
elemento ha il formato seguente:<add key="Key0" value="0" />
Aggiungere una
<appSettings>
sezione con<add>
elementi al file di configurazione tra i<configuration>
tag e</configuration>
.Ad esempio, il file di configurazione seguente include una
<appSettings>
sezione che specifica tre coppie chiave/valore:<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="Key0" value="0" /> <add key="Key1" value="1" /> <add key="Key2" value="2" /> </appSettings> </configuration>
In Esplora soluzioni fare doppio clic su Program.cs per visualizzare la finestra del codice. Aggiungere le istruzioni seguenti al modulo di codice.
Nota
Queste istruzioni devono essere visualizzate prima di qualsiasi altra istruzione nel file.
using System.Configuration; using System.Collections.Specialized;
Aggiungere un riferimento a System.Configuration.dll seguendo questa procedura:
- Scegliere Aggiungi riferimento dal menu Progetto.
- Nella finestra di dialogo Aggiungi riferimento selezionare la scheda .NET.
- Trovare e selezionare il nome del componente di
System.Configuration
. - selezionare OK.
Per contenere il valore da una chiave del file di configurazione nella
<appSettings>
sezione del file di configurazione, dichiarare una variabile stringa nellaMain
sezione come indicato di seguito:string sAttr;
Per recuperare un valore per una chiave specificata dalla
<appSettings>
sezione del file di configurazione, utilizzare ilGet
metodo dellaAppSettings
proprietà della classe ConfigurationManager . La classeConfigurationManager
si trova nello spazio dei nomiSystem.Configuration
. Quando ilAppSettings.Get
metodo riceve un parametro di input stringa contenente una chiave, l'applicazione recupera il valore associato alla chiave.Il codice seguente recupera il valore per l'attributo
Key0
dal file di configurazione associato. Il codice inserisce quindi questo valore nellasAttr
variabile stringa. Se non esiste una chiave per questo valore, non viene archiviato nulla insAttr
.sAttr = ConfigurationManager.AppSettings.Get("Key0");
Per visualizzare il valore recuperato dall'applicazione nella finestra Console, usare
Console.WriteLine
come segue:Console.WriteLine("The value of Key0 is "+sAttr);
È possibile usare un riferimento alla
AppSettings
proprietà per recuperare tutte le coppie chiave/valore nella<appSettings>
sezione . Quando si usa laAppSettings
proprietà , l'applicazione restituisce tutte le coppie chiave/valore associate. Queste coppie vengono archiviate in unNameValueCollection
tipo.NameValueCollection
Contiene voci chiave/valore per ogni chiave recuperata dall'applicazione. La classeNameValueCollection
si trova nello spazio dei nomiSystem.Collections.Specialized
.NameValueCollection sAll ; sAll = ConfigurationManager.AppSettings;
La
AllKeys
proprietà diNameValueCollection
fa riferimento a una matrice di stringhe con una voce per ogni chiave recuperata dall'applicazione. Usare una costruzione foreach per scorrere laAllKeys
matrice per accedere a ogni chiave recuperata dall'applicazione. Ogni voce di chiave inAllKeys
è un tipo di dati stringa.All'interno della
foreach
costruzione, usareConsole.WriteLine
per visualizzare la chiave e il relativo valore associato nella finestra della console. La chiave corrente elaborata dall'applicazione è ins
. Usarlo come indice insAllNameValueCollection
per ottenere il valore associato.foreach (string s in sAll.AllKeys) Console.WriteLine("Key: "+ s + " Value: " + sAll.Get(s)); Console.ReadLine();
Elenco codice completo
using System;
using System.Configuration;
using System.Collections.Specialized;
namespace ConConfig
{
class Program
{
static void Main(string[] args)
{
string sAttr;
// Read a particular key from the config file
sAttr = ConfigurationManager.AppSettings.Get("Key0");
Console.WriteLine("The value of Key0: " + sAttr);
// Read all the keys from the config file
NameValueCollection sAll;
sAll = ConfigurationManager.AppSettings;
foreach (string s in sAll.AllKeys)
Console.WriteLine("Key: " + s + " Value: " + sAll.Get(s));
Console.ReadLine();
}
}
}
Elenco completo dei file di configurazione (ConConfig.exe.config)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Key0" value="0" />
<add key="Key1" value="1" />
<add key="Key2" value="2" />
</appSettings>
</configuration>
Verificare che funzioni
Premere F5 per eseguire il codice. Nella finestra Console devono essere visualizzate le coppie chiave/valore dalla <appSettings>
sezione del file di configurazione associato come indicato di seguito:
The value of Key0: 0
Key: Key0 Value:0
Key: Key1 Value:1
Key: Key2 Value:2
Risoluzione dei problemi
Il file di configurazione viene salvato in formato XML. Assicurarsi di seguire tutte le regole di sintassi XML. Tenere presente che xml fa distinzione tra maiuscole e minuscole. Se il formato XML non è corretto o se un elemento è digitato in modo errato, si riceve un'eccezione
System.Configuration.Configuration
.Ad esempio, se si aggiunge l'attributo chiave di un
<add>
elemento con una K maiuscola invece di una k minuscola o se la<appSettings>
sezione viene visualizzata come<AppSettings>
(con una A maiuscola anziché una minuscola a), viene visualizzato un messaggio di errore.Il file di configurazione deve essere salvato nella stessa cartella dell'applicazione associata.
Per il nome del file di configurazione è necessario usare la sintassi seguente:
<ApplicationName>.<ApplicationType.config>Dove <ApplicationName> è il nome dell'applicazione. <ApplicationType> è il tipo di applicazione, ad esempio
.exe
. Ed.config
è il suffisso obbligatorio.