Använda 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.

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ålla 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. Peka på Nytt i Arkiv-menyn och välj sedan Projekt.

  3. välj Visual C# under Projekttyper och välj sedan Konsolprogram under Mallar. Ge projektet namnet ConConfig. Som standard skapar Visual C# en klass med namnet Program.

    Obs!

    I Visual Studio .NET väljer du Visual C# Projects under Projekttyper och sedan Konsolprogram under Mallar. Ge projektet namnet ConConfig. Som standard skapar Visual C# 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. I Solution Explorer högerklickar du på projektnamnet, väljer Lägg till och sedan Nytt objekt.

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

  7. I textrutan Namn skriver duApp.configoch 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 avsnittet i <appSettings> 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. I Solution Explorer dubbelklickar du på Program.cs för att visa kodfönstret. Lägg till följande instruktioner i kodmodulen.

    Obs!

    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. projektmenyn 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älj OK.
  11. Om du vill lagra värdet från en konfigurationsfilnyckel i <appSettings> avsnittet i konfigurationsfilen deklarerar du en strängvariabel i avsnittet på Main följande sätt:

    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 för AppSettings -egenskapen för ConfigurationManager klassen. 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. NameValueCollection innehåller 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 AllKeysNameValueCollection 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 genom 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 programmet bearbetar finns i s. Använd den 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();
        }
    }
}

Obs!

Den här koden riktar sig till .NET Framework 2.0. Om du använder .NET Framework 1.0 eller .NET Framework 1.1 ändrar du alla instanser av ConfigurationManager klassen till ConfigurationSettings.

Fullständig lista över konfigurationsfiler (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ökning

  • 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 versalt K i stället för ett gemener <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 suffix som krävs.

Referenser