2011-12-09 2 views
1

보통 Properties.Settings.blabla 속성을 사용하여 app.config 파일에서 일부 설정을 읽는 명령 줄 응용 프로그램이 있습니다.exe가 dll로 사용될 때 app.config 파일에 액세스 할 수 있습니까?

이 응용 프로그램은 dll로도 사용됩니다.

dll로 사용할 때 디렉토리에있는 모든 foo.exe.config를 무시합니다. 구성 파일에 액세스하는 메서드를 사용할 때 예상대로 예외를 throw하지 않지만 구성 파일을 가져 오지 않습니다.

dll이 자체 설정 파일을 사용하면서 exe를 사용하는 데있어 exe를 사용할 때 app.config 파일을 사용하게하는 방법이 있습니까? 나는 소비자 코드를 변경하고 싶지 않고 가능한 한 exe 코드에 영향을 미치고 싶다.

ConfigurationManager.OpenMappedExeConfiguration 메서드 또는 OpenExeConfiguration을 사용하는 솔루션을 보았습니다. exe 코드에서 이러한 메서드를 사용하는 솔루션입니까? 그런 식으로 dll 또는 exe로 사용되는지 여부와 관계없이 항상 config 파일을 찾습니다.

답변

1

원하는 경우 해당 파일에서 구체적으로 읽어야합니다. .NET 실행 파일은 자신의 app.config 파일에서 읽습니다. 라이브러리 코드 항상은 실행중인 응용 프로그램의 파일을 app.config에서 읽습니다. 심지어 확장 프로그램이 .exe 인 파일로 컴파일 된 라이브러리 코드까지도 읽습니다. 내가 app.config 말할 때 강조

편집/해명 , 나는 적절하게 이름 [program.exe.config] 파일에 대해 얘기 물론입니다.

+0

.dll은 현재 예를 들어 configs.config라는 구성 파일의 이름을 사용하지만 System.Configuration.ConfigurationSettings와 같은 것을 상속받은 WorkerAgent 클래스를 만들었습니다. 런타임시 .dll/console 응용 프로그램 이름과 같은 이름으로 app.config를 보지 않습니다. – MethodMan

+0

예를 사용하여 더 명확하게 설명해 보겠습니다. myapp라는 응용 프로그램과 mylib라는 라이브러리가 있다고 가정합니다. mylib는 exe (실제로는 자체적으로 실행될 수 있음)이지만 myapp에 의해 참조됩니다. mylib는 일반적인 Properties.Settings.blabla를 사용하여 설정 파일을 읽습니다. myapp 실행 중에 mylib의 메소드가 호출되면 Properties.Settings.blabla를 사용하면 어디에서 읽을 수 있습니까? myapp.exe.config 또는 mylib.exe.config ?? 당신의 대답에서, 나는 그것이 myapp.exe.config에서 읽을 수 있다고 가정합니다. 그리고 그 환경이 존재하지 않는다면 어떨까요? – Juancentro

+0

@Juancentro 귀하의 가정은 정확합니다. 이 경우'myapp.exe '가 현재 실행중인 프로그램이기 때문에 설정은'myapp.exe.config'에서 읽을 수 있습니다. 따라서 설정에 대한 적절한 구성이 누락 된 경우 어떤 일이 발생할지 모릅니다. 나는 누락 된 설정과 관련된 예외 또는 기본값 (0 또는 예외)을로드 할 가능성이있는로드를 기대합니다. –

관련 문제