asp.net으로 웹사이트를 만들때나 windows 응용프로그램을 만들때 각각의 config 파일에 환경 변수 같은 값을 저장해 놓고 쓰곤 합니다.
일전에 아쉽지만 잠깐 다루어 본적이 있습니다.
먼저 http://www.bangsil.net/Tag/Configuration 을 참고 하심이 좋을 듯 합니다.
첨부된 템플릿 파일의 ConfigurationHelper 클래스의 주석 부분을 보면 간단한 사용법이 나와 있네요..그대로 한번 옮겨 보겠습니다.
1. 사용자 정의 환경 설정을 사용하기 위해서는 아래와 같이 configuration섹션 내부에 config 구성이 이루어져야 합니다.
<CONFIGSECTIONS> <SECTIONGROUP name="rpnetworks" type="RPNetworks.Configurations.AncestorSectionGroup, RPNetworks.Configurations"> <SECTION name="dbConnection" type="RPNetworks.Configurations.DBConnectionSection, RPNetworks.Configurations" /> <SECTION name="monitoring" type="RPNetworks.Monitoring.CustomMonitoringSection, RPNetworks.Monitoring" /> <SECTION name="projectInfo" type="RPNetworks.Configurations.ProjectInfoSection, RPNetworks.Configurations" /> <SECTIONGROUP name="testProject" type="RPNetworks.Configurations.CustomConfigurationSectionGroup ,RPNetworks.Configurations"> <SECTION name="network" type="사용자정의네임스페이스.NetworkSection, 사용자정의네임스페이스" /> </SECTIONGROUP> </SECTIONGROUP> </CONFIGSECTIONS>
2. 섹션 및 섹션그룹에 대한 설정이 마무리 되면 이제 아래와 같은 코드로 설정을 하여야 합니다.
3. 이제 설정된 사용자 정의 섹션 testProject에 대한 섹션클래스를 생성하여야 합니다.
public class NetworkSection : CustomConfigurationSection { internal NetworkSection() : base() { this.SectionInformation.ForceSave = true; } [ConfigurationProperty("domain", IsRequired = true)] public string Domain { get { return (string)base["domain"]; } } [ConfigurationProperty("smtp")] public CustomConfigurationElementCollection Smtp { get { return (CustomConfigurationElementCollection)base["smtp"]; } } protected override bool SerializeElement(XmlWriter writer, bool serializeCollectionKey) { if (writer == null) { return false; } writer.WriteAttributeString("domain", this.Domain.ToString()); return true; } protected override bool SerializeToXmlElement(XmlWriter writer, string elementName) { bool ret = base.SerializeToXmlElement(writer, elementName); if (writer == null) { return false; } writer.WriteStartElement(elementName); this.SerializeElement(writer, false); this.Smtp.GetType().InvokeMember("SerializeToXmlElement", BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.NonPublic, null, this.Smtp, new object[2] { writer, "smtp" }); writer.WriteEndElement(); return true; } }
4. 다음과 같이 환경설정 값들을 조회 할 수 있습니다.
string domain = ConfigurationHelper.Project.GetSection("network").GetParameter("domain"); string server = ConfigurationHelper.Project.GetSection("network") .GetElements("smtp").Parameters["server"];
이상입니다.
Configuration 파트를 읽어 보시고 이해가 되었다면 별로 어려운 코드는 아니라고 생각 됩니다.
기본은 이정도 이니 다음 글부터는