[.net] Windows Forms C # 응용 프로그램에서 구성 파일을 사용하는 가장 간단한 방법
저는 .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 이상에서 작동합니다.
답변
이전 답변에 대한 설명 …
-
프로젝트에 새 파일 추가 ( 추가 → 새 항목 → 애플리케이션 구성 파일 )
-
새 구성 파일은 솔루션 탐색기에 App.Config 로 나타납니다 .
-
다음을 템플릿으로 사용하여이 파일에 설정을 추가합니다.
<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; }
-
빌드되면 출력 폴더에 <assemblyname> .exe.config라는 파일이 포함됩니다. 이것은 App.Config 파일 의 복사본입니다 . 이 파일을 만들기 위해 개발자가 더 이상 작업을 수행 할 필요가 없습니다.
답변
이전 답변을 빠르게 읽어 보면 정확 해 보이지만 Visual Studio 2008의 새로운 구성 기능에 대해 언급 한 사람은없는 것 같습니다. 여전히 app.config (컴파일시 YourAppName.exe.config에 복사 됨)를 사용합니다. 그러나 속성을 설정하고 유형을 지정하는 UI 위젯이 있습니다. 프로젝트의 “Properties”폴더에서 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;
}
참고 사항 : Microsoft에 따르면 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, Unraveling the Mysteries of .NET 2.0 Configuration에 있습니다. .NET 구성 파일의 섹션에 대한 다음으로 가장 좋아하는 (짧은) 기사는 섹션 처리기 이해-App.config 파일 입니다.
답변
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;
}
}
}