Przechowywanie i pobieranie informacji niestandardowych z pliku konfiguracji aplikacji za pomocą języka Visual C#
W tym artykule przedstawiono sposób przechowywania informacji niestandardowych z pliku konfiguracji, który można pobrać później w czasie wykonywania przez skojarzą aplikację. Warto zdefiniować dane skojarzone z aplikacją.
Uwaga 16.
Kod w tym artykule jest przeznaczony dla programu .NET Framework 2.0 i nowszych wersji. Aby dowiedzieć się, do których wersji ConfigurationManager
odnosi się klasa, zobacz sekcję Dotyczy .
Oryginalna wersja produktu: Visual C#
Oryginalny numer KB: 815786
Wymagania
Poniższa lista zawiera opis zalecanego sprzętu i oprogramowania, które są potrzebne:
- Microsoft Windows
- Visual C#
W tym artykule założono, że znasz następujące tematy:
- Extensible Markup Language (XML)
- Pliki konfiguracji platformy .NET
Tworzenie aplikacji konsolowej, która odczytuje plik konfiguracji
Ustawienia aplikacji można przechowywać w pliku konfiguracji skojarzonym z aplikacją. Pliki konfiguracji są zapisywane w formacie XML.
Przestrzenie System.Configuration
nazw i System.Collections.Specialized
w programie .NET Framework obejmują klasy niezbędne do pobrania informacji z pliku konfiguracji aplikacji .NET w czasie wykonywania.
Aby utworzyć aplikację konsolową, która odczytuje zawartość skojarzonego pliku konfiguracji w czasie wykonywania, wykonaj następujące kroki:
Uruchom program Visual Studio .NET lub Visual Studio.
W menu Plik wskaż polecenie Nowy, a następnie kliknij opcję Projekt.
wybierz pozycję Visual C# w obszarze Typy projektów, a następnie wybierz pozycję Aplikacja konsolowa w obszarze Szablony. Nadaj projektowi nazwę ConConfig. Domyślnie program Visual C# tworzy klasę o nazwie Program.
Uwaga 16.
W programie Visual Studio .NET wybierz pozycję Projekty Visual C# w obszarze Typy projektów, a następnie wybierz pozycję Aplikacja konsolowa w obszarze Szablony. Nadaj projektowi nazwę ConConfig. Domyślnie program Visual C# tworzy klasę o nazwie Class1.
Upewnij się, że okno Eksplorator rozwiązań jest widoczne. Jeśli nie jest widoczny, naciśnij kombinację CTRL+ALT+L.
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy nazwę projektu, wybierz pozycję Dodaj, a następnie wybierz pozycję Nowy element.
Na liście Dodaj nowy element wybierz pozycję Plik XML.
W polu tekstowym Nazwa wpisz App.config, a następnie wybierz pozycję Dodaj.
Plik konfiguracji aplikacji służy do zbierania niestandardowych ustawień aplikacji zapisywanych w formacie klucz/wartość. Elementy można uwzględnić
<add>
w<appSettings>
sekcji skojarzonego pliku konfiguracji. Każda para klucz/wartość ma jeden<add>
element. Element<add>
ma następujący format:<add key="Key0" value="0" />
Dodaj sekcję
<appSettings>
z elementami<add>
do pliku konfiguracji między tagami<configuration>
i</configuration>
.Na przykład następujący plik konfiguracji zawiera sekcję
<appSettings>
, która określa trzy pary klucz/wartość:<?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>
W Eksplorator rozwiązań kliknij dwukrotnie Program.cs, aby wyświetlić okno kodu. Dodaj następujące instrukcje do modułu kodu.
Uwaga 16.
Te instrukcje muszą pojawić się przed wszelkimi innymi instrukcjami w pliku.
using System.Configuration; using System.Collections.Specialized;
Dodaj odwołanie do System.Configuration.dll , wykonując następujące kroki:
- W menu Project (Projekt) wybierz pozycję Add Reference (Dodaj odwołanie).
- W oknie dialogowym Dodawanie odwołania wybierz kartę .NET.
- Znajdź i wybierz nazwę składnika .
System.Configuration
- wybierz pozycję OK.
Aby przechowywać wartość z klucza pliku konfiguracji w
<appSettings>
sekcji pliku konfiguracji, zadeklaruj zmienną ciągu w sekcji wMain
następujący sposób:string sAttr;
Aby pobrać wartość określonego klucza z
<appSettings>
sekcji pliku konfiguracji, użyjGet
metody właściwościAppSettings
klasy ConfigurationManager . KlasaConfigurationManager
znajduje się wSystem.Configuration
przestrzeni nazw.AppSettings.Get
Gdy metoda odbiera parametr wejściowy ciągu zawierający klucz, aplikacja pobiera wartość skojarzona z kluczem.Poniższy kod pobiera wartość atrybutu
Key0
ze skojarzonego pliku konfiguracji. Następnie kod umieszcza tę wartość w zmiennejsAttr
ciągu. Jeśli klucz nie istnieje dla tej wartości, nic nie jest przechowywane w plikusAttr
.sAttr = ConfigurationManager.AppSettings.Get("Key0");
Aby wyświetlić wartość pobieraną przez aplikację w oknie Konsola, użyj następującego polecenia
Console.WriteLine
:Console.WriteLine("The value of Key0 is "+sAttr);
Możesz użyć jednego odwołania do właściwości,
AppSettings
aby pobrać wszystkie pary klucz/wartość w<appSettings>
sekcji. Gdy używaszAppSettings
właściwości, aplikacja zwraca wszystkie skojarzone pary klucz/wartość. Te pary są przechowywane w typieNameValueCollection
. ZawieraNameValueCollection
wpisy klucza/wartości dla każdego klucza pobieranego przez aplikację. KlasaNameValueCollection
znajduje się wSystem.Collections.Specialized
przestrzeni nazw.NameValueCollection sAll ; sAll = ConfigurationManager.AppSettings;
Właściwość
AllKeys
odwołuje się do tablicy ciągówNameValueCollection
, która zawiera wpis dla każdego klucza pobieranego przez aplikację. Użyj konstrukcji foreach, aby iterować przez tablicęAllKeys
, aby uzyskać dostęp do każdego klucza pobieranego przez aplikację. Każdy wpis klucza w plikuAllKeys
jest typem danych ciągu.Wewnątrz konstrukcji
foreach
użyjConsole.WriteLine
polecenia , aby wyświetlić klucz i jego skojarzona wartość w oknie Konsola. Bieżący klucz, który przetwarza aplikacja, znajduje się w elemencies
. Użyj go jako indeksu w obiekciesAllNameValueCollection
, aby uzyskać skojarzona wartość.foreach (string s in sAll.AllKeys) Console.WriteLine("Key: "+ s + " Value: " + sAll.Get(s)); Console.ReadLine();
Kompletna lista kodu
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();
}
}
}
Pełna lista plików konfiguracji (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>
Sprawdź, czy działa
Naciśnij F5, aby uruchomić kod. W oknie Konsola powinny być wyświetlane pary klucz/wartość z <appSettings>
sekcji skojarzonego pliku konfiguracji w następujący sposób:
The value of Key0: 0
Key: Key0 Value:0
Key: Key1 Value:1
Key: Key2 Value:2
Rozwiązywanie problemów
Plik konfiguracji jest zapisywany w formacie XML. Upewnij się, że są zgodne ze wszystkimi regułami składni XML. Pamiętaj, że w pliku XML jest uwzględniana wielkość liter. Jeśli kod XML nie jest poprawnie sformułowany lub jeśli element jest błędnie napisany, otrzymasz
System.Configuration.Configuration
wyjątek.Jeśli na przykład dodasz atrybut
<add>
klucza elementu z wielką literą K zamiast małej litery k, lub jeśli<appSettings>
sekcja jest wyświetlana jako<AppSettings>
(z wielkimi literami A zamiast małymi literami), zostanie wyświetlony komunikat o błędzie.Plik konfiguracji musi być zapisany w tym samym folderze co skojarzona aplikacja.
Należy użyć następującej składni dla nazwy pliku konfiguracji:
<ApplicationName>.<ApplicationType.config>Gdzie <ApplicationName> to nazwa aplikacji. <ApplicationType> to typ aplikacji, taki jak
.exe
. I.config
jest wymaganym sufiksem.