Dela via


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:

  1. Starta Visual Studio .NET eller Visual Studio.

  2. På Arkiv-menyn pekar du på Nytt och väljer sedan Projekt.

  3. 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.

  4. Kontrollera att Solution Explorer-fönstret är synligt. Om den inte visas trycker du på tangentkombinationen CTRL+ALT+L.

  5. Högerklicka på projektnamnet i Solution Explorer, välj Lägg till och välj sedan Nytt objekt.

  6. I listan Lägg till nytt objekt väljer du XML-fil.

  7. I textrutan Namn skriver du App.config och väljer sedan Lägg till.

  8. 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>
    
  9. Dubbelklicka 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;
    
  10. Lägg till en referens till System.Configuration.dll genom att följa dessa steg:

    1. På Projekt-menyn väljer du Lägg till referens.
    2. I dialogrutan Lägg till referens väljer du fliken .NET.
    3. Leta upp och välj komponentnamnet för System.Configuration.
    4. välja OK.
  11. Om du vill lagra värdet från en konfigurationsfilnyckel i <appSettings> avsnittet i konfigurationsfilen deklarerar du en strängvariabel i Main avsnittet enligt följande:

    string sAttr;
    
  12. Om du vill hämta ett värde för en angiven nyckel från <appSettings> avsnittet i konfigurationsfilen använder du Get metoden AppSettings för egenskapen för klassen ConfigurationManager . Klassen ConfigurationManager finns i System.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 i sAttr strängvariabeln. Om det inte finns någon nyckel för det här värdet lagras ingenting i sAttr.

    sAttr = ConfigurationManager.AppSettings.Get("Key0");
    
  13. 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);
    
  14. 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änder AppSettings egenskapen returnerar programmet alla associerade nyckel/värde-par. Dessa par lagras i en NameValueCollection typ. Innehåller NameValueCollection nyckel-/värdeposter för varje nyckel som programmet hämtar. Klassen NameValueCollection finns i System.Collections.Specialized namnområdet.

    NameValueCollection sAll ;
    sAll = ConfigurationManager.AppSettings;
    
  15. 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 matrisen AllKeys för att komma åt varje nyckel som programmet hämtar. Varje nyckelpost i AllKeys är en strängdatatyp.

    I konstruktionen foreach använder du Console.WriteLine för att visa nyckeln och dess associerade värde i konsolfönstret. Den aktuella nyckeln som programprocesserna finns i s. Använd det som ett index i sAllNameValueCollection 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.

Referenser