.NET Framework
die Einstellungen
Suche…
AppSettings aus ConfigurationSettings in .NET 1.x
Veraltete Nutzung
Die ConfigurationSettings- Klasse war der ursprüngliche Weg, um Einstellungen für eine Assembly in .NET 1.0 und 1.1 abzurufen. Sie wurde durch die ConfigurationManager- Klasse und die WebConfigurationManager- Klasse ersetzt.
Wenn Sie im Abschnitt appSettings
der Konfigurationsdatei zwei Schlüssel mit demselben Namen haben, wird der letzte verwendet.
app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="keyName" value="anything, as a string"/>
<add key="keyNames" value="123"/>
<add key="keyNames" value="234"/>
</appSettings>
</configuration>
Program.cs
using System;
using System.Configuration;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
string keyValue = ConfigurationSettings.AppSettings["keyName"];
Debug.Assert("anything, as a string".Equals(keyValue));
string twoKeys = ConfigurationSettings.AppSettings["keyNames"];
Debug.Assert("234".Equals(twoKeys));
Console.ReadKey();
}
}
}
AppSettings aus ConfigurationManager in .NET 2.0 und höher lesen
Die ConfigurationManager- Klasse unterstützt die AppSettings
Eigenschaft, mit der Sie das Lesen der Einstellungen aus dem appSettings
Abschnitt einer Konfigurationsdatei auf dieselbe Weise wie bei .NET 1.x fortsetzen können.
app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="keyName" value="anything, as a string"/>
<add key="keyNames" value="123"/>
<add key="keyNames" value="234"/>
</appSettings>
</configuration>
Program.cs
using System;
using System.Configuration;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
string keyValue = ConfigurationManager.AppSettings["keyName"];
Debug.Assert("anything, as a string".Equals(keyValue));
var twoKeys = ConfigurationManager.AppSettings["keyNames"];
Debug.Assert("234".Equals(twoKeys));
Console.ReadKey();
}
}
}
Einführung in die Unterstützung stark typisierter Anwendungen und Benutzereinstellungen von Visual Studio
Visual Studio hilft bei der Verwaltung von Benutzer- und Anwendungseinstellungen. Die Verwendung dieses Ansatzes hat diese Vorteile gegenüber der Verwendung des appSettings
Abschnitts der Konfigurationsdatei.
Einstellungen können stark getippt werden. Für einen Einstellungswert kann jeder Typ verwendet werden, der serialisiert werden kann.
Anwendungseinstellungen können leicht von den Benutzereinstellungen getrennt werden. Anwendungseinstellungen werden in einer einzigen Konfigurationsdatei gespeichert:
web.config
für Websites und Webanwendungen und app.config, umbenannt in Assembly .exe.config, wobei Assembly der Name der ausführbaren Datei ist. Benutzereinstellungen (die nicht vonuser.config
verwendet werden) werden in einer Dateiuser.config
im Anwendungsdatenordner des Benutzers gespeichert (je nach Betriebssystemversion).Anwendungseinstellungen aus Klassenbibliotheken können ohne Risiko von Namenskollisionen in einer einzigen Konfigurationsdatei zusammengefasst werden, da jede Klassenbibliothek über einen eigenen Abschnitt für benutzerdefinierte Einstellungen verfügen kann.
In den meisten Projekttypen verfügt der Projekteigenschaften-Designer über eine Registerkarte Einstellungen , auf der sich benutzerdefinierte Anwendungs- und Benutzereinstellungen erstellen lassen. Anfänglich ist die Registerkarte "Einstellungen" leer, mit einem einzigen Link zum Erstellen einer Standardeinstellungsdatei. Wenn Sie auf den Link klicken, werden folgende Änderungen vorgenommen:
Wenn für das Projekt keine Konfigurationsdatei (
app.config
oderweb.config
) vorhanden ist, wird eine erstellt.Die Registerkarte Einstellungen wird durch ein Raster-Steuerelement ersetzt, mit dem Sie einzelne Einstellungen erstellen, bearbeiten und löschen können.
Im Projektmappen-Explorer wird unter dem Sonderordner Eigenschaften ein Element
Settings.settings
hinzugefügt. Durch Öffnen dieses Elements wird die Registerkarte Einstellungen geöffnet.Eine neue Datei mit einer neuen Teilklasse wird unter dem Ordner
Properties
im Projektordner hinzugefügt. Diese neue Datei heißtSettings.Designer.__
(.cs, .vb usw.) und die Klasse heißtSettings
. Die Klasse wird durch einen Code generiert. Sie sollte also nicht bearbeitet werden. Die Klasse ist jedoch eine Teilklasse. Sie können die Klasse erweitern, indem Sie zusätzliche Elemente in eine separate Datei einfügen. Darüber hinaus wird die Klasse mithilfe des Singleton-Musters implementiert, wodurch die Singleton-Instanz mit der EigenschaftDefault
.
Wenn Sie jeden neuen Eintrag zur Registerkarte "Einstellungen" hinzufügen, führt Visual Studio die folgenden zwei Aktionen aus:
Speichert die Einstellung in der Konfigurationsdatei in einem benutzerdefinierten Konfigurationsabschnitt, der von der Settings-Klasse verwaltet werden soll.
Erstellt ein neues Mitglied in der Settings-Klasse, um die Einstellung in dem bestimmten Typ zu lesen, zu schreiben und darzustellen, der auf der Registerkarte Settings ausgewählt ist.
Lesen stark typisierter Einstellungen aus dem benutzerdefinierten Abschnitt der Konfigurationsdatei
Beginnen Sie mit einem neuen Einstellungsbereich und einer benutzerdefinierten Konfiguration:
Fügen Sie mit der Zeit System.Timespan eine Anwendungseinstellung mit dem Namen ExampleTimeout hinzu, und legen Sie den Wert auf 1 Minute fest:
Speichern Sie die Projekteigenschaften, wodurch die Einträge auf der Registerkarte Einstellungen gespeichert werden, die benutzerdefinierte Einstellungsklasse neu generiert und die Projektkonfigurationsdatei aktualisiert wird.
Verwenden Sie die Einstellung aus Code (C #):
Program.cs
using System;
using System.Diagnostics;
using ConsoleApplication1.Properties;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
TimeSpan exampleTimeout = Settings.Default.ExampleTimeout;
Debug.Assert(TimeSpan.FromMinutes(1).Equals(exampleTimeout));
Console.ReadKey();
}
}
}
Unter der Decke
Schauen Sie in der Projektkonfigurationsdatei nach, wie der Eintrag für die Anwendungseinstellungen erstellt wurde:
app.config (Visual Studio aktualisiert dies automatisch)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="ConsoleApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<appSettings />
<applicationSettings>
<ConsoleApplication1.Properties.Settings>
<setting name="ExampleTimeout" serializeAs="String">
<value>00:01:00</value>
</setting>
</ConsoleApplication1.Properties.Settings>
</applicationSettings>
</configuration>
Beachten Sie, dass der Abschnitt appSettings
nicht verwendet wird. Der Abschnitt applicationSettings
enthält einen benutzerdefinierten, für einen Namespace qualifizierten Abschnitt, der für jeden Eintrag ein setting
enthält. Der Typ des Werts wird nicht in der Konfigurationsdatei gespeichert. Es ist nur der Settings
Klasse bekannt.
In der Settings
Klasse Settings
, wie diese ConfigurationManager
Klasse zum Lesen dieses benutzerdefinierten Abschnitts verwendet wird.
Settings.designer.cs (für C # -Projekte)
...
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("00:01:00")]
public global::System.TimeSpan ExampleTimeout {
get {
return ((global::System.TimeSpan)(this["ExampleTimeout"]));
}
}
...
Beachten Sie, dass ein DefaultSettingValueAttribute
erstellt wurde, um den auf der Registerkarte Einstellungen des Projekteigenschaften-Designers eingegebenen Wert zu speichern. Wenn der Eintrag in der Konfigurationsdatei fehlt, wird stattdessen dieser Standardwert verwendet.