.NET Framework
inställningar
Sök…
AppSettings från ConfigurationSettings i .NET 1.x
Avskrivad användning
Klassen ConfigurationSettings var det ursprungliga sättet att hämta inställningar för en enhet i .NET 1.0 och 1.1. Det har ersatts av klassen ConfigurationManager och klassen WebConfigurationManager .
Om du har två nycklar med samma namn i avsnittet appSettings i konfigurationsfilen används den sista.
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();
}
}
}
Läser AppSettings från ConfigurationManager i .NET 2.0 och senare
Klassen ConfigurationManager stöder egenskapen AppSettings , som gör att du kan fortsätta läsa inställningarna från avsnittet appSettings i en konfigurationsfil på samma sätt som .NET 1.x stöds.
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();
}
}
}
Introduktion till starkt typ av applikations- och användarinställningsstöd från Visual Studio
Visual Studio hjälper till att hantera användar- och applikationsinställningar. Att använda denna metod har dessa fördelar jämfört med att använda appSettings avsnittet i konfigurationsfilen.
Inställningar kan göras starkt skrivna. Alla typer som kan serialiseras kan användas för ett inställningsvärde.
Programinställningar kan enkelt separeras från användarinställningar. Programinställningar lagras i en enda konfigurationsfil:
web.configför webbplatser och webbapplikationer och app.config, som byts namn till montering .exe.config, där montering är namnet på den körbara. Användarinställningar (som inte används av webbprojekt) lagras i enuser.configfil i användarens mapp Application Data (som varierar med operativsystemversionen).Programinställningar från klassbibliotek kan kombineras till en enda konfigurationsfil utan risk för namnkollisioner, eftersom varje klassbibliotek kan ha sin egen anpassade inställningssektion.
I de flesta projekttyper har Project Properties Designer en flik Inställningar som är utgångspunkten för att skapa anpassade applikations- och användarinställningar. Ursprungligen kommer fliken Inställningar att vara tom, med en enda länk för att skapa en standardinställningsfil. Klicka på länken resulterar i dessa ändringar:
Om en konfigurationsfil (
app.configellerweb.config) inte finns för projektet, skapas en.Inställningsfliken kommer att ersättas med en rutnätkontroll som gör att du kan skapa, redigera och ta bort enskilda inställningsposter.
I Lösningsutforskaren läggs ett
Settings.settingstill under Specialmappen Egenskaper. Om du öppnar detta objekt öppnas fliken Inställningar.En ny fil med en ny delklass läggs till under mappen
Propertiesi projektmappen. Den här nya filen heterSettings.Designer.__(.cs, .vb, etc.), och klassen heterSettings. Klassen är kodgenererad, så den bör inte redigeras, men klassen är en delklass, så du kan utöka klassen genom att lägga till ytterligare medlemmar i en separat fil. Dessutom implementeras klassen med hjälp av Singleton-mönstret och exponerar singleton-instansen med egenskapen som heterDefault.
När du lägger till varje ny post på fliken Inställningar gör Visual Studio dessa två saker:
Sparar inställningen i konfigurationsfilen i ett anpassat konfigurationsavsnitt som är utformat för att hanteras av klassen Inställningar.
Skapar en ny medlem i klassen Inställningar för att läsa, skriva och presentera inställningen i den specifika typen som väljs från fliken Inställningar.
Läser starkt skrivna inställningar från anpassade avsnitt i konfigurationsfilen
Börjar från en ny inställningsklass och anpassad konfigurationsavsnitt:
Lägg till en applikationsinställning, ExempelTimeout, med tiden System.Timespan och ställ in värdet till 1 minut:
Spara projektegenskaperna, som sparar inställningarna i fliken Inställningar, samt genererar den anpassade inställningsklassen och uppdaterar projektkonfigurationsfilen.
Använd inställningen från kod (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();
}
}
}
Under täcket
Titta i projektkonfigurationsfilen för att se hur applikationsinställningen har skapats:
app.config (Visual Studio uppdaterar detta automatiskt)
<?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>
Lägg märke till att avsnittet appSettings inte används. applicationSettings avsnittet innehåller ett anpassat namnutrymme-avsnitt som har ett setting för varje post. Typen av värdet lagras inte i konfigurationsfilen; det är endast känt av klassen Settings .
Titta i klassen Settings att se hur den använder klassen ConfigurationManager att läsa detta anpassade avsnitt.
Settings.designer.cs (för C # -projekt)
...
[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"]));
}
}
...
Lägg märke till att ett DefaultSettingValueAttribute skapades för att lagra värdet som anges på fliken Inställningar i Project Properties Designer. Om posten saknas i konfigurationsfilen används standardvärdet istället.

