2016-07-29 4 views
0

프로젝트에서 프로젝트에서 참조 될 때 잘 작동하는 사용자 지정 구성 섹션을 정의했습니다. 이제 우리는 참조로 추가 된 dll에서이 동일한 구성 섹션을 참조하려고합니다. 이 dll의 코드에서 ConfigurationManager.AppSettings에 아무 문제없이 액세스 할 수 있지만 구성 항목에 액세스 할 때 오류가 발생합니다.DLL에서 사용자 지정 구성 섹션로드 참조

의 Web.config 코드 구성 섹션을 얻으려고 할 때 다음과 같은 오류를 던지고 참조하는 DLL에

<section name="mailManager" type="FullNamespace, NameSpace" /> 

<mailManager prop1="propVal1"> 
    <prop2 key1="keyVal1" key2="keyVal2" key3="keyVal3" /> 
    <prop3 key1="keyVal1" key2="keyVal2" /> 
</mailManager> 

. 이 섹션은 dll 및 주요 솔루션 코드 기반의 솔루션에 모두 존재합니다.

var mailManagerConfigSection = ConfigurationManager.GetSection("mailManager") as EmailManagerConfigSection; 

우리가 얻을 오류는 오류 CS0433입니다 : 유형 'EmailManagerConfigSection이'와 'namespace2, 버전 = 1.0.0.0 모두'문화 = 중립, PublicKeyToken = null이 namespace1, 버전 = 1.0.0.0 '에 존재 , 문화 = 중립, PublicKeyToken = null '.

dll 참조는 주 코드가 실행되는 디렉토리와 동일한 bin 디렉토리에 있습니다. 어쨌든 dll이 null 인 dll에 대한 로컬이 아닌 값을 가진 기본 EmailManagerConfigSection을 참조하도록해야합니까? 우리는 dll.config 파일을 소개하고 싶지 않습니다.

답변

1

구성 섹션은 DLL이 아니라 실행 파일에서 정의,로드 및 참조되어야합니다.

당신은 당신의 솔루션 공간에서 DLL 프로젝트에서 설정 파일의 소스 코드를 유지할 수 있지만, DLL의 컴파일이 설정 파일의 호스트 실행의의 app.config을 (두고 어디든지 그 DLL을 참조) app.config [ApplicationName.Exe.config]에 해당 파일을 선언하고 지정해야합니다. config에 대한 적절한 <ConfigSections><section> 요소와 실제 섹션 요소를 호스트 실행 파일 app.config에 추가하기 만하면됩니다.

+0

감사합니다 찰스 내가 ConfigurationManager.AppSettings [ "asVal"] 항목을 가져 오는 것을 보았을 때 나는 비슷한 것을 할 수 있었지만 그렇게 할 수없는 이유를 이해할 수 있기를 바랍니다. 시간을 내 주셔서 감사합니다. –

+0

문제 없으니 기꺼이 도와주세요! –