사용자 정의 구성 파일로드


119

정적 ConfigurationManager.OpenExe(exePath)메서드 를 사용하여 어셈블리와 관련된 구성 파일을 열 수 있다는 것을 알고 있지만 어셈블리와 관련이없는 구성을 열고 싶습니다. 표준 .NET 구성 파일입니다.

답변:


244

Ricky가 게시 한 기사는 매우 좋지만 불행히도 귀하의 질문에 답변하지 않습니다.

문제를 해결하려면 다음 코드를 시도해야합니다.

ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = @"d:\test\justAConfigFile.config.whateverYouLikeExtension";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);

구성 내의 값에 액세스해야하는 경우 인덱스 연산자를 사용할 수 있습니다.

config.AppSettings.Settings["test"].Value;

1
@Oliver으로는 whateverYouLikeExtension, 당신은 당신이 있음을 뜻 한다뭔가를 한 후 config.?
Svish

4
@Oliver 지금 시도해 보았습니다. :)없이 잘 작동하는 것 같습니다.
Svish

1
이 작업을 수행했지만 ConfigurationManager.ConnectionStrings에 액세스 할 때 여전히 이전 데이터를 가져옵니다. 내가 무엇을 놓치고 있습니까?
MAW74656

1
@ MAW74656 :에 액세스 할 필요가 없습니다 ConfigurationManager.ConnectionStrings. 대신 config위의 마지막 문에서 반환 된 객체 에서 값을 읽어야합니다 .
Oliver

3
이 작업이 완료된 후 appSettings를 가져 오는 방법을 검색하는 다른 사용자 : var foo = config.AppSettings.Settings [ "test"]. Value;
Roro

8

구성 파일은 XML 파일 일 뿐이며 다음과 같이 열 수 있습니다.

private static XmlDocument loadConfigDocument()
{
    XmlDocument doc = null;
    try
    {
        doc = new XmlDocument();
        doc.Load(getConfigFilePath());
        return doc;
    }
    catch (System.IO.FileNotFoundException e)
    {
        throw new Exception("No configuration file found.", e);
    }
    catch (Exception ex)
    {
        return null;
    }
}

나중에 다음을 통해 값을 검색합니다.

    // retrieve appSettings node

    XmlNode node =  doc.SelectSingleNode("//appSettings");

이후에 연결할 수없는 코드가 감지되었습니다 throw new Exception("No configuration file found.", e);.
Oybek

반환 null을 제거하겠습니다. 실제로 도달하지 않습니다.
Otávio Décio 2012

7
.Net 라이브러리의 훌륭한 클래스가있을 때 XML을 사용하는 이유. 나는 이것을 사용하는 것이 좋지 않으며 디자인이 좋지 않습니다. 다음은? 다른 문자열 클래스를 구현하십시오 ... 이것을 고려하십시오.
Yuki

@ OtávioDécio 사용자 지정 .config 파일에서 추적을 활성화하기 위해 system.diagnostics를 추가 할 수 있습니까?
FaizanHussainRabbani

@FaizanRabbani는 사용자 지정 추적에 대해 잘 모르지만 msdn.microsoft.com/en-us/library/ms733025(v=vs.110).aspx 에 따라 구성 파일에 진단을 추가 할 수 있어야합니다.
Otávio Décio

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