Använd Visual C# för att lagra och hämta anpassad information från en programkonfigurationsfil
Den här artikeln beskriver hur du lagrar anpassad information från en konfigurationsfil som du kan hämta senare under körningen av dess associerade program. Det är användbart när du måste definiera data som är associerade med ett program.
Kommentar
Koden i den här artikeln riktar sig till .NET Framework 2.0 och senare versioner. Information om vilka specifika versioner klassen ConfigurationManager
gäller för finns i avsnittet Gäller för .
Ursprunglig produktversion: Visual C#
Ursprungligt KB-nummer: 815786
Krav
I följande lista beskrivs den rekommenderade maskinvara och programvara som du behöver:
- Microsoft Windows
- Visual C#
Den här artikeln förutsätter att du är bekant med följande ämnen:
- Utökningsbart markeringsspråk (XML)
- .NET-konfigurationsfiler
Skapa ett konsolprogram som läser en konfigurationsfil
Du kan lagra programinställningar i konfigurationsfilen som är associerad med programmet. Konfigurationsfiler sparas i XML-format.
Namnrymderna System.Configuration
och System.Collections.Specialized
i .NET Framework innehåller de klasser som krävs för att hämta information från en .NET-programkonfigurationsfil under körningen.
Följ dessa steg för att skapa ett konsolprogram som läser innehållet i en associerad konfigurationsfil under körningen:
Starta Visual Studio .NET eller Visual Studio.
På Arkiv-menyn pekar du på Nytt och väljer sedan Projekt.
välj Visual C# under Projekttyper och välj sedan Konsolprogram under Mallar. Ge projektet namnet ConConfig. Visual C# skapar som standard en klass med namnet Program.
Kommentar
I Visual Studio .NET väljer du Visual C# Projects under Projekttyper och sedan Konsolprogram under Mallar. Ge projektet namnet ConConfig. Visual C# skapar som standard en klass med namnet Class1.
Kontrollera att Solution Explorer-fönstret är synligt. Om den inte visas trycker du på tangentkombinationen CTRL+ALT+L.
Högerklicka på projektnamnet i Solution Explorer, välj Lägg till och välj sedan Nytt objekt.
I listan Lägg till nytt objekt väljer du XML-fil.
I textrutan Namn skriver du App.config och väljer sedan Lägg till.
Du kan använda en programkonfigurationsfil för att samla in anpassade programinställningar som du sparar i nyckel/värde-format. Du kan inkludera
<add>
element i<appSettings>
avsnittet i en associerad konfigurationsfil. Varje nyckel/värde-par har ett<add>
element. Ett<add>
element har följande format:<add key="Key0" value="0" />
Lägg till ett
<appSettings>
avsnitt med<add>
element i konfigurationsfilen mellan taggarna<configuration>
och</configuration>
.Följande konfigurationsfil innehåller till exempel ett
<appSettings>
avsnitt som anger tre nyckel/värde-par:<?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>
Dubbelklicka på Program.cs i Solution Explorer för att visa kodfönstret. Lägg till följande instruktioner i kodmodulen.
Kommentar
Dessa instruktioner måste visas före andra instruktioner i filen.
using System.Configuration; using System.Collections.Specialized;
Lägg till en referens till System.Configuration.dll genom att följa dessa steg:
- På Projekt-menyn väljer du Lägg till referens.
- I dialogrutan Lägg till referens väljer du fliken .NET.
- Leta upp och välj komponentnamnet för
System.Configuration
. - välja OK.
Om du vill lagra värdet från en konfigurationsfilnyckel i
<appSettings>
avsnittet i konfigurationsfilen deklarerar du en strängvariabel iMain
avsnittet enligt följande:string sAttr;
Om du vill hämta ett värde för en angiven nyckel från
<appSettings>
avsnittet i konfigurationsfilen använder duGet
metodenAppSettings
för egenskapen för klassen ConfigurationManager . KlassenConfigurationManager
finns iSystem.Configuration
namnområdet.AppSettings.Get
När metoden tar emot en strängindataparameter som innehåller en nyckel hämtar programmet det värde som är associerat med nyckeln.Följande kod hämtar värdet för
Key0
attributet från den associerade konfigurationsfilen. Koden placerar sedan det här värdet isAttr
strängvariabeln. Om det inte finns någon nyckel för det här värdet lagras ingenting isAttr
.sAttr = ConfigurationManager.AppSettings.Get("Key0");
Om du vill visa värdet som programmet hämtar i konsolfönstret använder du
Console.WriteLine
följande:Console.WriteLine("The value of Key0 is "+sAttr);
Du kan använda en referens till
AppSettings
egenskapen för att hämta alla nyckel/värde-par i<appSettings>
avsnittet. När du använderAppSettings
egenskapen returnerar programmet alla associerade nyckel/värde-par. Dessa par lagras i enNameValueCollection
typ. InnehållerNameValueCollection
nyckel-/värdeposter för varje nyckel som programmet hämtar. KlassenNameValueCollection
finns iSystem.Collections.Specialized
namnområdet.NameValueCollection sAll ; sAll = ConfigurationManager.AppSettings;
Egenskapen
AllKeys
NameValueCollection
för refererar till en strängmatris som har en post för varje nyckel som programmet hämtar. Använd en foreach-konstruktion för att iterera via matrisenAllKeys
för att komma åt varje nyckel som programmet hämtar. Varje nyckelpost iAllKeys
är en strängdatatyp.I konstruktionen
foreach
använder duConsole.WriteLine
för att visa nyckeln och dess associerade värde i konsolfönstret. Den aktuella nyckeln som programprocesserna finns is
. Använd det som ett index isAllNameValueCollection
för att hämta dess associerade värde.foreach (string s in sAll.AllKeys) Console.WriteLine("Key: "+ s + " Value: " + sAll.Get(s)); Console.ReadLine();
Fullständig kodlista
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();
}
}
}
Fullständig konfigurationsfillista (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>
Kontrollera att det fungerar
Tryck på F5 för att köra koden. Konsolfönstret bör visa nyckel/värde-paren <appSettings>
från avsnittet i den associerade konfigurationsfilen på följande sätt:
The value of Key0: 0
Key: Key0 Value:0
Key: Key1 Value:1
Key: Key2 Value:2
Felsöka
Konfigurationsfilen sparas i XML-format. Kontrollera att du följer alla XML-syntaxregler. Kom ihåg att XML är skiftlägeskänsligt. Om XML-koden inte är välformulerad eller om ett element är felstavat får du ett
System.Configuration.Configuration
undantag.Om du till exempel lägger till nyckelattributet för ett
<add>
element med versaler K i stället för en gemen<appSettings>
k, eller om avsnittet visas som<AppSettings>
(med versaler A i stället för gemener a), får du ett felmeddelande.Konfigurationsfilen måste sparas i samma mapp som dess associerade program.
Du måste använda följande syntax för konfigurationsfilens namn:
<ApplicationName>.<ApplicationType.config>Där <ApplicationName> är namnet på programmet. <ApplicationType> är typen av program, till exempel
.exe
. Och.config
är det nödvändiga suffixet.