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

StackOverflow https://stackoverflow.com/questions/114527

문제

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

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

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

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

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

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

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

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

도움이 되었습니까?

해결책

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

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

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

좋다:

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

다음을 수행하여 구성원에 액세스하십시오.

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

이는 .net 2 이상에서 작동합니다.

다른 팁

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

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) 빌드되면 출력 폴더에 <어셈블리 이름>.exe.config라는 파일이 포함됩니다. 이는 App.Config 파일의 복사본이 됩니다.이 파일을 생성하기 위해 개발자가 추가 작업을 수행할 필요는 없습니다.

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

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

string s = Properties.Settings.Default.MyConnectionString;

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

참고사항 마이크로소프트에 따르면, ConfigurationSettings 대신 ConfigurationManager를 사용해야 합니다.(비고 섹션 참조) "ConfigurationSettings 클래스는 뒤로 호환성 만 제공합니다.새 애플리케이션의 경우 대신 ConfigurationManager 클래스 또는 WebConfigurationManager 클래스를 사용해야 합니다."

구성 파일의 기본 이름은 [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 폴더에 복사됩니다.

.NET 애플리케이션 구성에 관한 최고의(IMHO) 기사는 CodeProject에 있습니다. .NET 2.0 구성의 미스터리 풀기.그리고 .net 구성 파일의 섹션에 대해 제가 다음으로 좋아하는(짧은) 기사는 다음과 같습니다. 섹션 처리기 이해 - App.config 파일.

Windows 양식에는 다음이 있습니다. app.config, 이는 다음과 매우 유사합니다. web.config.하지만 필요한 것은 사용자 정의 값이므로 설정을 사용하는 것이 좋습니다.그렇게 하려면 프로젝트 속성을 연 다음 설정으로 이동하세요.설정 파일이 존재하지 않는 경우 파일을 생성할 수 있는 링크가 제공됩니다.그런 다음 거기에 표시된 테이블에 설정을 추가할 수 있습니다. 그러면 적절한 XML과 설정을 로드하고 저장하는 데 사용할 수 있는 설정 클래스가 모두 생성됩니다.설정 클래스의 이름은 다음과 같습니다. 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;
        }
    }
}

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

이를 수행하는 매우 간단한 방법은 다음을 사용하는 것입니다. 나만의 관습 Settings 수업.

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

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

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

다른 사람이 언급했듯이 System.Configuration.ConfigurationManager를 사용해야합니다. 링크 ] .Net 2.0의 새로운 기능입니다.

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

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top