Windows Forms C # 응용 프로그램에서 구성 파일을 사용하는 가장 간단한 방법


88

저는 .NET을 처음 접했지만 여전히 구성 파일이 작동하는 방식에 대해 이해하지 못했습니다.

Google에서 검색 할 때마다 web.config에 대한 결과가 표시되지만 Windows Forms 애플리케이션을 작성하고 있습니다.

System.Configuration 네임 스페이스를 사용해야한다는 것을 알아 냈지만 설명서가 도움이되지 않습니다.

내 구성 파일이 XYZ.xml임을 어떻게 정의합니까? 아니면 구성 파일의 "기본"이름이 있습니까? 인식하지 못했습니다.

또한 새 섹션을 어떻게 정의합니까? ConfigurationSection에서 상속하는 클래스를 만들어야합니까?

다음과 같은 값을 가진 구성 파일을 갖고 싶습니다.

<MyCustomValue>1</MyCustomValue>
<MyCustomPath>C:\Some\Path\Here</MyCustomPath>

간단한 방법이 있습니까? 간단한 구성 파일을 읽고 쓰는 방법을 간단한 방법으로 설명 할 수 있습니까?


1
.NET의 버전은 무엇입니까? 2.0 이상에서는 설정이라는 매우 귀여운 방법이 있습니다.
Thomas

1
이 오타했지만 @Seven는 : "예와 함께 설명"을 의미 할 수
파비오 고메스

답변:


121

App.Config를 사용하려고합니다.

프로젝트에 새 항목을 추가하면 애플리케이션 구성 파일이라는 것이 있습니다. 그것을 추가하십시오.

그런 다음 구성 / 앱 설정 섹션에 키를 추가합니다.

처럼:

<configuration>
 <appSettings>
  <add key="MyKey" value="false"/>

다음을 수행하여 회원 액세스

System.Configuration.ConfigurationSettings.AppSettings["MyKey"];

이것은 .NET 2 이상에서 작동합니다.


2
실제로 v1.0부터 모든 버전의 .NET에서 작동합니다. .NET 2.0의 새 클래스는 ConfigurationManager입니다.
Mike Dimmick

4
개인적으로 "응용 프로그램 속성"(Framework 2.0 이상 만 해당)의 "설정"탭을 사용합니다. Visual Studio는 설정에 대해 강력한 형식의 속성을 코드 생성하기 때문입니다. 또한 런타임에 읽고 쓰는 "사용자"설정을 포함 할 수 있습니다.
Adrian Clark

@ 마이크 예, 그런 느낌이 들었지만 너무 확신하지 못했습니다. 나는 1을 많이 사용하지 않았습니다.
qui

26
(가) 주 ConfigurationSettings, 사용되지 않습니다 사용 System.Configuration.ConfigurationManager.AppSettings["MyKey"];.
JNF 2014 년

16
또한 참고, System.Configuration.ConfigurationManager프로젝트 를 사용하려면 참조가 필요합니다System.Configuration.dll
dmeglio

66

이전 답변에 대한 설명 ...

  1. 프로젝트에 새 파일 추가 ( 추가새 항목애플리케이션 구성 파일 )

  2. 새 구성 파일은 솔루션 탐색기에 App.Config 로 나타납니다 .

  3. 다음을 템플릿으로 사용하여이 파일에 설정을 추가합니다.

    <configuration>
      <appSettings>
        <add key="setting1" value="key"/>
      </appSettings>
      <connectionStrings>
        <add name="prod" connectionString="YourConnectionString"/>
      </connectionStrings>
    </configuration>
    
  4. 다음과 같이 검색하십시오.

    private void Form1_Load(object sender, EventArgs e)
    {
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
    }
    
  5. 빌드되면 출력 폴더에 <assemblyname> .exe.config라는 파일이 포함됩니다. 이것은 App.Config 파일 의 복사본입니다 . 이 파일을 만들기 위해 개발자가 더 이상 작업을 수행 할 필요가 없습니다.


1
이것은 나에게 유용했습니다. 다른 두 가지 사항 : 프로젝트에 새 파일을 추가 할 때 대화 상자 왼쪽에있는 일반 노드를 클릭했을 때 응용 프로그램 구성 파일이 발견되었습니다. 코드에서 ConfigurationManager 클래스를 사용하려면 System.Configuration DLL을 참조에 추가해야했습니다.
John Gilmer

28

이전 답변을 빠르게 읽어 보면 정확 해 보이지만 Visual Studio 2008의 새로운 구성 기능에 대해 언급 한 사람은없는 것 같습니다. 여전히 app.config (컴파일시 YourAppName.exe.config에 복사 됨)를 사용합니다. 그러나 속성을 설정하고 유형을 지정하는 UI 위젯이 있습니다. 프로젝트의 "Properties"폴더에서 Settings.settings 를 두 번 클릭 합니다.

가장 좋은 부분은 코드에서이 속성에 액세스하는 것이 형식 안전하다는 것입니다. 컴파일러는 속성 이름을 잘못 입력하는 것과 같은 명백한 실수를 포착합니다. 예를 들어 app.config의 MyConnectionString이라는 속성 은 다음과 같이 액세스됩니다.

string s = Properties.Settings.Default.MyConnectionString;

이것은 VS2005에서 사용할 수 있습니다.
Greg D

5
좋지만 (프로젝트 속성 | 설정) 컴파일해야하는 코드를 생성합니다. 설정을 변경하려면 고객에게 새 바이너리를 릴리스해야합니다.
JohnL4

@ JohnL4 이러한 설정이 "사용자"범위에 있으면 프로그래밍 방식으로 변경할 수 있습니다. 예Settings.Default.Test = "abc"; Settings.Default.Save();
Peet Brits

10

App.config 파일을 만들어야 합니다 ( web.config 와 매우 유사 ).

프로젝트를 마우스 오른쪽 버튼으로 클릭하고 새 항목을 추가 한 다음 새 "응용 프로그램 구성 파일"을 선택해야합니다 .

프로젝트에서 System.Configuration을 사용하여 추가했는지 확인하십시오.

그런 다음 여기에 값을 추가 할 수 있습니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="setting1" value="key"/>
  </appSettings>
  <connectionStrings>
    <add name="prod" connectionString="YourConnectionString"/>
  </connectionStrings>
</configuration>

    private void Form1_Load(object sender, EventArgs e)
    {
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
    }

참고 사항 : Microsoft에 따르면 ConfigurationSettings 대신 ConfigurationManager를 사용해야합니다 (설명 섹션 참조).

"ConfigurationSettings 클래스는 이전 버전과의 호환성 만 제공합니다. 새 응용 프로그램의 경우 대신 ConfigurationManager 클래스 또는 WebConfigurationManager 클래스를 사용해야합니다."


매우 유용합니다. 티라노에 내 문제 해결
JCMorris

Visual Studio 2015 : 프로젝트> 참조 추가를 클릭합니다. 절반 아래로 스크롤하여 System.Configuration을 찾습니다. 확인을 클릭 한 다음 Nathan의 설명에 따라 코드 줄을 업데이트합니다.
Robot70

7

구성 파일의 기본 이름은 [yourexe] .exe.config입니다. 따라서 notepad.exe에는 프로그램과 동일한 폴더에 notepad.exe.config라는 구성 파일이 있습니다. 이것은 CLR 및 프레임 워크의 모든 측면에 대한 일반 구성 파일이지만 <appSettings>노드 아래에 고유 한 설정을 포함 할 수 있습니다 .

<appSettings>요소로 액세스 할 수있는 이름 값 쌍의 컬렉션을 생성한다 System.Configuration.ConfigurationSettings.AppSettings. 그러나 변경 사항을 구성 파일에 다시 저장할 수있는 방법은 없습니다.

구성 파일 IConfigurationSectionHandler<configSections>요소에 이를 구현 하고 추가 하는 클래스를 만들어 구성 파일에 사용자 정의 요소를 추가 할 수도 있습니다 (예 : 구조화 된 설정 정의) . 그런 다음을 호출하여 액세스 할 수 있습니다 ConfigurationSettings.GetConfig.

.NET 2.0 System.Configuration.ConfigurationManager은 사용자 별 시스템 데이터 재정의와 함께 여러 파일을 지원 하는 새 클래스를 추가합니다 . 또한 수정 된 구성을 설정 파일에 다시 저장할 수 있습니다.

Visual Studio App.config는 프로젝트가 빌드 될 때 올바른 이름으로 EXE 폴더에 복사되는 라는 파일을 만듭니다 .



3

Windows Forms에는 app.config파일과 매우 유사한 web.config파일이 있습니다. 그러나 필요한 것은 사용자 정의 값이므로 Settings를 사용하는 것이 좋습니다 .

이렇게하려면 프로젝트 속성을 열고 설정으로 이동합니다. 설정 파일이없는 경우이를 만들 수있는 링크가 있습니다. 그런 다음 거기에 표시되는 테이블에 설정을 추가하면 적절한 XML과 설정 을로드하고 저장하는 데 사용할 수 있는 Settings 클래스가 모두 생성 됩니다.

설정 클래스의 이름은 DefaultNamespace.Properties.Settings. 그런 다음 다음과 유사한 코드를 사용할 수 있습니다.

using DefaultNamespace.Properties;

namespace DefaultNamespace {
    class Class {
        public int LoadMySettingValue() {
            return Settings.Default.MySettingValue;
        }
        public void SaveMySettingValue(int value) {
            Settings.Default.MySettingValue = value;
        }
    }
}

2

app.config를 가리키는 다른 답변에 동의합니다. 그러나 app.config에서 직접 값을 읽는 대신 유틸리티 클래스 (AppSettings는 내가 사용하는 이름)를 만들어서 읽고 속성으로 노출해야합니다. AppSettings 클래스는 app.config의 값 및 어셈블리의 애플리케이션 버전 정보 (AssemblyVersion 및 AssemblyFileVersion)와 같은 여러 저장소의 설정을 집계하는 데 사용할 수 있습니다.



1

사용하다:

System.Configuration.ConfigurationSettings.AppSettings["MyKey"];

AppSettings는 더 이상 사용되지 않으며 이제 더 이상 사용되지 않는 것으로 간주됩니다 ( link ).

또한 app.config 의 appSettings 섹션이 applicationSettings 섹션 으로 대체되었습니다 .

다른 사람이 언급했듯이 .NET 2.0에 새로 추가 된 System.Configuration.ConfigurationManager ( 링크 )를 사용해야합니다 .


ConfigurationSettings는 AppSettings가 아니라 더 이상 사용되지 않습니다.
Toby

0

사용중인 .NET 및 Visual Studio 버전은 무엇입니까?

새 프로젝트를 만들 때 솔루션에 app.config 라는 파일이 있어야합니다 . 이것이 기본 구성 파일입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.