2008-09-22 1 views
78

저는 .NET을 처음 접했을뿐만 아니라 구성 파일의 작동 방식에 대해서도 여전히 몰랐습니다.Windows Forms C# 응용 프로그램에서 구성 파일을 만드는 가장 간단한 방법

Google에서 검색 할 때마다 web.config에 대한 결과가 표시되지만 Windows 양식 응용 프로그램을 작성하고 있습니다.

System.Configuration 네임 스페이스를 사용해야하지만 문서가 도움이되지 않는다는 것을 알았습니다.

구성 파일을 XYZ.xml로 정의하는 방법은 무엇입니까? 또는 설정 파일에 "기본"이름이 있습니까? 나는 아직도 그것을 얻지 않았다.

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

난 그냥이 같은 몇 가지 값을 설정 파일 싶은 :

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

그것을 할 수있는 간단한 방법이 있나요를? 간단한 구성 파일에서 읽고 쓰는 방법을 간단한 방법으로 설명 할 수 있습니까?

+1

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

+2

멋진 단어 "examplain" – Seven

+1

@ 오타되었지만 "예제로 설명"을 의미 할 수 있습니다. –

답변

110

App.Config를 사용하고 싶습니다.

프로젝트에 새 항목을 추가하면 응용 프로그램 구성 파일이라는 것이 있습니다. 그것을 추가하십시오. .NET 2 이상에서이 작동

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

을 수행하여

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

액세스 회원 :

그런 다음 당신은 구성/appSettings는 섹션

처럼에 키를 추가합니다.

+1

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

+4

Visual Studio에서는 설정에 강력하게 형식화 된 속성을 코드화하므로 "응용 프로그램 속성"(Framework 2.0 이후 버전)의 "설정"탭을 개인적으로 사용합니다. 또한 런타임에 읽기/쓰기 인 "사용자"설정을 포함 할 수 있습니다. –

+0

@Mike 그래, 나는 그럴듯한 느낌이 들었다. 그러나 나는 그렇게 확신하지 못했다. 나는 1을 많이 사용하지는 않았다. – qui

0

.Net 및 VS의 어떤 버전을 사용하고 있습니까?

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

6

.NET 응용 프로그램 구성에 대한 최상의 (IMHO) 문서는 CodeProject Unraveling the Mysteries of .NET 2.0 Configuration에 있습니다. .net 구성 파일의 섹션에 대한 다음으로 가장 좋아하는 (더 짧은) 기사는 Understanding Section Handlers - App.config File입니다.

+0

사용자가 물어 보는 가장 간단한 방법은 아닙니다. 하지만 .NET 2.0 구성의 신비를 푸는 것은 정말 훌륭한 일련의 기사입니다. –

3

Windows 양식의 경우 app.config이 있으며 이는 web.config과 매우 유사합니다. 하지만 필자가 필요로하는 것은 사용자 정의 값이므로 설정을 사용하는 것이 좋습니다. 이렇게하려면 프로젝트 속성을 열고 설정으로 이동하십시오. 설정 파일이 없으면 링크를 만들어야합니다. 그런 다음 표시되는 테이블에 설정을 추가하면 적절한 XML과 설정을로드하고 저장하는 데 사용할 수있는 설정 클래스가 생성됩니다. 설정 클래스의 이름은 DefaultNamespace.Properties.Settings입니다. "새로운, 당신은 새로운 항목을 당신이 바로 프로젝트를 클릭합니다

(Web.config를 매우 유사)을 app.config 파일을 생성 추가해야

using DefaultNamespace.Properties; 

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

: 그런 다음, 다음과 유사한 코드를 사용할 수 있습니다 응용 프로그램 구성 파일 "을 참조하십시오.

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; 
    } 


그냥 메모, according to Microsoft, 당신은 대신 ConfigurationSettings의의 ConfigurationManager를 사용해야합니다 거기에 값을 추가 할 수 있습니다. (비고 섹션 참조) "ConfigurationSettings 클래스는 이전 버전과의 호환성 만 제공하므로 새 응용 프로그램의 경우 ConfigurationManager 클래스 나 WebConfigurationManager 클래스를 대신 사용해야합니다."

+0

매우 도움이됩니다. 내 문제를 T. –

+0

에 해결했습니다. Visual Studio 2015 : 프로젝트> 참조 추가를 클릭하십시오. System.Configuration을 찾으려면 아래로 스크롤하십시오. 확인을 클릭 한 다음 Nathan의 설명에 따라 코드 줄을 업데이트하십시오. – Robot70

7

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

요소 <appSettings>System.Configuration.ConfigurationSettings.AppSettings으로 액세스 할 수있는 이름 - 값 쌍의 모음을 만듭니다. 그러나 변경 사항을 다시 구성 파일에 저장하는 방법은 없습니다.

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

.NET 2.0에는 사용자 별 시스템 별 재정의로 여러 파일을 지원하는 새로운 클래스 System.Configuration.ConfigurationManager이 추가되었습니다. 또한 설정 파일에 수정 된 구성 저장을 지원합니다.

Visual Studio에서는 App.config이라는 파일을 만듭니다.이 파일은 프로젝트가 빌드 될 때 EXE 폴더에 올바른 이름으로 복사됩니다. 새로운 설정 파일이 솔루션에 나타납니다 이전 답변

62

해명 ...

1) 프로젝트에 새 파일을 추가합니다 (추가 -> 새 항목 -> 응용 프로그램 구성 파일)

2) Explorer를 App.Config로 설정하십시오. 내장 때

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

5), 당신의 출력 폴더가 포함됩니다 :

3) 템플릿

<configuration> 
    <appSettings> 
    <add key="setting1" value="key"/> 
    </appSettings> 
    <connectionStrings> 
    <add name="prod" connectionString="YourConnectionString"/> 
    </connectionStrings> 
</configuration> 

4)이처럼 검색으로 다음 사용하여이 파일에 설정을 추가 <assemblyname> .exe.config 파일이 파일은 App.Config 파일의 복사본입니다. 이 파일을 만들려면 개발자가 더 이상 작업하지 않아도됩니다.

+0

이것은 나에게 유용했다. 두 번째 다른 점 : 새 파일을 프로젝트에 추가 할 때 대화 상자의 왼쪽에있는 일반 노드를 클릭하면 응용 프로그램 구성 파일을 찾았습니다. 내 코드에서 ConfigurationManager 클래스를 사용하려면 참조에 System.Configuration DLL을 추가해야했습니다. –

2

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

25

이전 답변을 빠르게 읽었지만 VS 2008의 새로운 구성 기능을 언급 한 사람은 보이지 않습니다. 여전히 app.config (YourAppName.exe에 컴파일 할 때 복사 됨)를 사용합니다. config)하지만 속성을 설정하고 해당 유형을 지정하는 UI 위젯이 있습니다. 프로젝트의 "Properties"폴더에서 Settings.settings를 두 번 클릭하십시오.

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

string s = Properties.Settings.Default.MyConnectionString; 
+0

VS2005에서 사용할 수 있습니다. –

+5

Nice,하지만 (Project Properties | Settings) 컴파일해야하는 코드를 생성합니다. 설정을 변경하려면 새 바이너리를 고객에게 릴리스해야합니다. – JohnL4

1

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

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

또한 app.config의 appSettings 섹션이 applicationSettings 섹션으로 대체되었습니다. 다른 사람이 언급 한 바와 같이

, 당신은 닷넷 2.0

2

에 대한 귀하의 your own custom Settings class을 사용하려면이이 일을 아주 간단한 방법으로 새로운 System.Configuration.ConfigurationManager [link]를 사용한다.

+0

http://msdn.microsoft.com/en-us/library/system.configuration.applicationsettingsbase.aspx의 ApplicationSettings에 대한 간략한 링크는 ConfigurationManager 구현보다 간단합니다. 설정 가져 오기/설정, "XML 쉐이핑"에 신경 쓰지 마십시오. – maxwellb

관련 문제