수색…
.NET 1.x의 ConfigurationSettings에서 AppSettings
더 이상 사용되지 않는 사용법
ConfigurationSettings 클래스는 .NET 1.0 및 1.1에서 어셈블리에 대한 설정을 검색하는 원래 방법이었습니다. 이 클래스는 ConfigurationManager 클래스 및 WebConfigurationManager 클래스로 대체되었습니다.
구성 파일의 appSettings
섹션에 같은 이름의 키가 두 개있는 경우 마지막 키가 사용됩니다.
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();
}
}
}
.NET 2.0 이상의 ConfigurationManager에서 AppSettings 읽기
ConfigurationManager 클래스는 AppSettings
속성을 지원합니다.이 속성을 사용하면 .NET 1.x와 동일한 방식으로 구성 파일의 appSettings
섹션에서 설정을 계속 읽을 수 있습니다.
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();
}
}
}
Visual Studio의 강력한 유형의 응용 프로그램 및 사용자 설정 지원 소개
Visual Studio는 사용자 및 응용 프로그램 설정을 관리하는 데 유용합니다. 이 방법을 사용하면 구성 파일의 appSettings
섹션을 사용하는 것보다 이점이 있습니다.
설정을 강력하게 입력 할 수 있습니다. 직렬화 할 수있는 모든 유형을 설정 값으로 사용할 수 있습니다.
응용 프로그램 설정은 사용자 설정과 쉽게 분리 할 수 있습니다. 응용 프로그램 설정은 웹 사이트 및 웹 응용 프로그램의 경우
web.config
, 어셈블리 .exe.config로 이름이 변경된 app.config라는 단일 구성 파일에 저장됩니다. 여기서 assembly 는 실행 파일의 이름입니다. 사용자 설정 (웹 프로젝트에서 사용하지 않음)은 사용자의 Application Data 폴더 (운영 체제 버전에 따라 다름)의user.config
파일에 저장됩니다.각 클래스 라이브러리에는 고유 한 사용자 정의 설정 섹션이 있으므로 클래스 라이브러리의 응용 프로그램 설정을 이름 충돌의 위험없이 단일 구성 파일로 결합 할 수 있습니다.
대부분의 프로젝트 유형에서 프로젝트 속성 디자이너 에는 사용자 지정 응용 프로그램 및 사용자 설정을 만드는 시작 지점 인 설정 탭이 있습니다. 처음에는 설정 탭이 공백으로 표시되고 기본 설정 파일을 만드는 링크가 하나만 표시됩니다. 링크를 클릭하면 다음과 같은 변경 사항이 발생합니다.
프로젝트에 대한 구성 파일 (
app.config
또는web.config
)이 없으면 파일이 만들어집니다.설정 탭은 개별 설정 항목을 작성, 편집 및 삭제할 수있는 그리드 컨트롤로 대체됩니다.
솔루션 탐색기에서
Settings.settings
항목이 속성 특수 폴더 아래에 추가됩니다. 이 항목을 열면 설정 탭이 열립니다.새 부분 클래스가있는 새 파일이 프로젝트 폴더의
Properties
폴더 아래에 추가됩니다. 이 새 파일의 이름은Settings.Designer.__
(.cs, .vb 등)이며 클래스 이름은Settings
입니다. 클래스는 코드 생성이므로 편집해서는 안되지만 클래스는 부분 클래스이므로 추가 멤버를 별도의 파일에 넣어 클래스를 확장 할 수 있습니다. 또한 클래스는 Singleton Pattern을 사용하여 구현되며 Singleton 인스턴스는Default
라는 속성으로 노출됩니다.
각 새 항목을 설정 탭에 추가하면 Visual Studio에서 다음 두 가지 작업을 수행합니다.
설정 클래스에 의해 관리되도록 설계된 사용자 정의 구성 섹션에서 설정 파일을 구성 파일에 저장합니다.
Settings 클래스에서 새 멤버를 만들고 Settings 탭에서 선택한 특정 유형의 설정을 읽고 쓰고 표시합니다.
구성 파일의 사용자 정의 섹션에서 강력한 형식의 설정 읽기
새로운 Settings 클래스 및 사용자 정의 구성 섹션에서 시작 :
ExampleTimeout이라는 응용 프로그램 설정을 System.Timespan 시간을 사용하여 추가하고 값을 1 분으로 설정합니다.
설정 탭 항목을 저장하는 프로젝트 속성을 저장하고 사용자 지정 Settings 클래스를 다시 생성하고 프로젝트 구성 파일을 업데이트합니다.
코드 (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();
}
}
}
언더 커버
프로젝트 설정 파일을보고 애플리케이션 설정 항목이 어떻게 생성되었는지 확인하십시오 :
app.config (Visual Studio에서 자동으로 업데이트)
<?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>
appSettings
섹션은 사용되지 않습니다. applicationSettings
섹션에는 각 항목에 대한 setting
요소가있는 사용자 정의 네임 스페이스 규정 섹션이 있습니다. 값의 유형은 구성 파일에 저장되지 않습니다. Settings
클래스에서만 알 수 있습니다.
Settings
클래스에서 ConfigurationManager
클래스를 사용하여이 사용자 정의 섹션을 읽는 방법을 확인하십시오.
Settings.designer.cs (C # 프로젝트의 경우)
...
[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"]));
}
}
...
DefaultSettingValueAttribute
는 프로젝트 속성 디자이너의 설정 탭에 입력 된 값을 저장하기 위해 만들어졌습니다. 항목이 구성 파일에서 누락 된 경우이 기본값이 대신 사용됩니다.