2011-08-12 14 views
2

내가이 구조와 C#에서 응용 프로그램을 구축 :세트 어셈블리 참조 경로

SYSTEMPATH
- MainApplication.EXE
- API.dll
- 모듈
------- Module1.dll
------- Module2.dll

MainApplication.exe에는 어셈블리 API.dll에 대한 참조가 있습니다. 그리고 "Assembly.Load (dllFile)"에 의해 Module1과 Module2 어셈블리를 사용합니다. Module1.dll 및 Module2.dll 파일에도 API.dll 파일이 필요합니다.

그래서 그들은 동일한 경로에있는 API.dll이 필요하며 API.dll 파일을 두 디렉토리 (SystemPath 및 Modules)에 넣어야합니다.

내가 원하는 것은 Assembly.dll을로드 할 때 파일 API.dll이 해당 폴더에 있음을 모듈에 알리는 방법입니다.

전역 어셈블리 캐시를 사용할 수 없으며이 구조를 변경할 수 없습니다.

이 문제를 해결하려면 어떻게해야합니까?

+0

Stack Overflow에서'AppDomain.CurrentDomain.AssemblyResolve'에 대한 검색을 제안합니다. 당신은 당신의 질문에 답하는 기존의 질문을 찾을 의무가 있습니다. – stakx

답변

4

MainApplication.exe.config 파일에 어셈블리를로드 할 때 검색 할 세미콜론으로 구분 된 세미콜론으로 구분 된 목록을 지정하는 <probing> element을 추가 할 수 있습니다. 예를 들면 다음과 같습니다.

이 구성을 사용하면 Module1에서 Assembly.Load 또는 reference를 수행 할 수 있습니다. 응용 프로그램 루트가 최상위 레벨에 있으므로 Module1이 Assembly.Load 또는 API.dll을 참조하면 최상위 디렉토리에서 자동으로 가져옵니다.

0

API.dll이 Module1/2.dll과 같은 폴더에 있어야합니까? 프로그래밍 방식으로 모듈을로드 할 때 주 앱의 API.dll이 이미로드되었습니다. 같은 버전의 API로 컴파일되었는지 확인하십시오.