수색…


.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 섹션을 사용하는 것보다 이점이 있습니다.

  1. 설정을 강력하게 입력 할 수 있습니다. 직렬화 할 수있는 모든 유형을 설정 값으로 사용할 수 있습니다.

  2. 응용 프로그램 설정은 사용자 설정과 쉽게 분리 할 수 ​​있습니다. 응용 프로그램 설정은 웹 사이트 및 웹 응용 프로그램의 경우 web.config , 어셈블리 .exe.config로 이름이 변경된 app.config라는 단일 구성 파일에 저장됩니다. 여기서 assembly 는 실행 파일의 이름입니다. 사용자 설정 (웹 프로젝트에서 사용하지 않음)은 사용자의 Application Data 폴더 (운영 체제 버전에 따라 다름)의 user.config 파일에 저장됩니다.

  3. 각 클래스 라이브러리에는 고유 한 사용자 정의 설정 섹션이 있으므로 클래스 라이브러리의 응용 프로그램 설정을 이름 충돌의 위험없이 단일 구성 파일로 결합 할 수 있습니다.

대부분의 프로젝트 유형에서 프로젝트 속성 디자이너 에는 사용자 지정 응용 프로그램 및 사용자 설정을 만드는 시작 지점 인 설정 탭이 있습니다. 처음에는 설정 탭이 공백으로 표시되고 기본 설정 파일을 만드는 링크가 하나만 표시됩니다. 링크를 클릭하면 다음과 같은 변경 사항이 발생합니다.

  1. 프로젝트에 대한 구성 파일 ( app.config 또는 web.config )이 없으면 파일이 만들어집니다.

  2. 설정 탭은 개별 설정 항목을 작성, 편집 및 삭제할 수있는 그리드 컨트롤로 대체됩니다.

  3. 솔루션 탐색기에서 Settings.settings 항목이 속성 특수 폴더 아래에 추가됩니다. 이 항목을 열면 설정 탭이 열립니다.

  4. 새 부분 클래스가있는 새 파일이 프로젝트 폴더의 Properties 폴더 아래에 추가됩니다. 이 새 파일의 이름은 Settings.Designer.__ (.cs, .vb 등)이며 클래스 이름은 Settings 입니다. 클래스는 코드 생성이므로 편집해서는 안되지만 클래스는 부분 클래스이므로 추가 멤버를 별도의 파일에 넣어 클래스를 확장 할 수 있습니다. 또한 클래스는 Singleton Pattern을 사용하여 구현되며 Singleton 인스턴스는 Default 라는 속성으로 노출됩니다.

각 새 항목을 설정 탭에 추가하면 Visual Studio에서 다음 두 가지 작업을 수행합니다.

  1. 설정 클래스에 의해 관리되도록 설계된 사용자 정의 구성 섹션에서 설정 파일을 구성 파일에 저장합니다.

  2. Settings 클래스에서 새 멤버를 만들고 Settings 탭에서 선택한 특정 유형의 설정을 읽고 쓰고 표시합니다.

구성 파일의 사용자 정의 섹션에서 강력한 형식의 설정 읽기

새로운 Settings 클래스 및 사용자 정의 구성 섹션에서 시작 :

프로젝트 속성 디자이너의 설정 탭

ExampleTimeout이라는 응용 프로그램 설정을 System.Timespan 시간을 사용하여 추가하고 값을 1 분으로 설정합니다.

ExampleTimeout 응용 프로그램 설정을 추가하는 동안 설정 탭

설정 탭 항목을 저장하는 프로젝트 속성을 저장하고 사용자 지정 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 는 프로젝트 속성 디자이너의 설정 탭에 입력 된 값을 저장하기 위해 만들어졌습니다. 항목이 구성 파일에서 누락 된 경우이 기본값이 대신 사용됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow