Przechowywanie i pobieranie informacji niestandardowych z pliku konfiguracji aplikacji przy użyciu 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 skojarzoną aplikację. Jest to przydatne, gdy musisz zdefiniować dane skojarzone z aplikacją.
Oryginalna wersja produktu: Visual C#
Oryginalny numer KB: 815786
Wymagania
Na poniższej liście przedstawiono zalecany sprzęt i oprogramowanie, których potrzebujesz:
- Microsoft Windows
- Visual C#
W tym artykule założono, że znasz następujące tematy:
- Rozszerzalny język znaczników (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 .NET Framework zawierają klasy niezbędne do pobrania informacji z pliku konfiguracji aplikacji platformy .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 konsola w obszarze Szablony. Nadaj projektowi nazwę ConConfig. Domyślnie program Visual C# tworzy klasę o nazwie Program.
Uwaga
W programie Visual Studio .NET wybierz pozycję Projekty Visual C# w obszarze Typy projektów, a następnie wybierz pozycję Aplikacja konsola w obszarze Szablony. Nadaj projektowi nazwę ConConfig. Domyślnie język Visual C# tworzy klasę o nazwie Class1.
Upewnij się, że okno Eksplorator rozwiązań jest widoczne. Jeśli nie jest widoczny, naciśnij kombinację klawiszy 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 umożliwia zbieranie niestandardowych ustawień aplikacji, które są zapisywane 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<configuration>
tagami 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
Te instrukcje muszą być wyświetlane przed 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ę Dodaj odwołanie.
- W oknie dialogowym Dodawanie odwołania wybierz kartę .NET .
- Znajdź i wybierz nazwę składnika
System.Configuration
. - wybierz przycisk 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
metodyAppSettings
właściwościConfigurationManager
klasy. KlasaConfigurationManager
znajduje sięSystem.Configuration
w przestrzeni nazw.AppSettings.Get
Gdy metoda odbiera parametr wejściowy ciągu zawierający klucz, aplikacja pobiera wartość skojarzoną 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 wsAttr
pliku .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. W przypadku korzystania zAppSettings
właściwości aplikacja zwraca wszystkie skojarzone pary klucz/wartość. Te pary są przechowywane w typieNameValueCollection
. ElementNameValueCollection
zawiera wpisy klucz/wartość dla każdego klucza pobieranego przez aplikację. KlasaNameValueCollection
znajduje sięSystem.Collections.Specialized
w przestrzeni nazw.NameValueCollection sAll ; sAll = ConfigurationManager.AppSettings;
Właściwość
AllKeys
NameValueCollection
odwołuje się do tablicy ciągów zawierającej wpis dla każdego klucza pobieranego przez aplikację. Użyj konstrukcji foreach, aby iterować tablicę wAllKeys
celu uzyskania dostępu do każdego klucza pobieranego przez aplikację. Każdy wpis klucza wAllKeys
pliku jest typem danych ciągu.Wewnątrz konstrukcji
foreach
użyj poleceniaConsole.WriteLine
, aby wyświetlić klucz i skojarzoną z nim wartość w oknie Konsola. Bieżący klucz, który przetwarza aplikacja, znajduje się w plikus
. Użyj go jako indeksu w pliku ,sAllNameValueCollection
aby uzyskać skojarzoną z nim wartość.foreach (string s in sAll.AllKeys) Console.WriteLine("Key: "+ s + " Value: " + sAll.Get(s)); Console.ReadLine();
Ukończ listę 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();
}
}
}
Uwaga
Ten kod jest przeznaczony dla .NET Framework 2.0. Jeśli używasz .NET Framework 1.0 lub .NET Framework 1.1, zmień wszystkie wystąpienia klasy na ConfigurationManager
ConfigurationSettings
.
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 klawisz 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 przestrzegasz wszystkich reguł składni XML. Pamiętaj, że kod XML uwzględnia wielkość liter. Jeśli kod XML nie jest dobrze sformułowany lub jeśli element jest błędnie napisany, otrzymasz wyjątek
System.Configuration.Configuration
.Jeśli na przykład dodasz atrybut klucza
<add>
elementu z wielką literą K zamiast małymi literami k lub jeśli<appSettings>
sekcja jest wyświetlana jako<AppSettings>
(z wielkimi literami A zamiast małymi literami a), zostanie wyświetlony komunikat o błędzie.Plik konfiguracji musi być zapisany w tym samym folderze co skojarzona z nim aplikacja.
Dla nazwy pliku konfiguracji należy użyć następującej składni:
<ApplicationName>.<.config ApplicationType>Where <ApplicationName> to nazwa aplikacji. <ApplicationType> to typ aplikacji, taki jak
.exe
. I.config
jest wymagany sufiks.
Informacje
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla