나는 지난 두 주 동안이 문제를 해결하려고했지만 아직 좋은 해결책을 찾지 못했습니다. 잘하면 여기에 답을 얻을 수 있습니다.런타임에 두 가지 버전의 어셈블리를로드 중
공통 프로젝트/DLL (ZC)을 가리키고 있지만 다른 버전에있을 수있는 두 어셈블리 (ZA & ZB)가 있습니다 (동일한 DLL 이름, 동일한 네임 스페이스, 일부 클래스가 다를 수 있음) . 그러나 각 어셈블리는 자체적으로 작동하지만 런타임에 다른 어셈블리에로드되는 경우 (예 : A로드 B) 작업을 수행 할 수 없습니다. 도움이 필요해. 여기
는 설정이다 : ZB는 ZC 버전에 따라 1.1ZA는 ZB에서 뭔가를로드 할 필요를로드해야 1.0
- ZA는 ZC에 따라 (공통) 버전있는 런타임에 ZC에 따라 다름).
ZA가 마스터 앱입니다.
bin
디렉토리 아래에는 ZB와 그 의존성 (ZC)을 모두 배치하고자하는 플러그인 디렉토리plugins/plugin-ZB
이 있습니다.는 여기에 지금까지 시도한 작업은 다음과 같습니다
Assembly.Load()
DLL의 동일한 버전을 사용 - 일했다 괜찮.Assembly.Load()
다른 버전의 dll - ZB로드를 사용하지만 메소드가 실행될 때 메소드를 찾을 수없는 예외가 발생합니다.AppDomain.Load()
파일을 찾을 수 없습니다 오류가 발생했습니다. 심지어 대표자를 사용하여 어셈블리를 해결했습니다.ZC에 관한 세부 정보 : - 일부 방법은 공개 정적입니다 (일부는 그렇지 않습니다). 예 :
Log.Log("hello");
- 일부는 값 (프리미티브 또는 객체)을 반환 할 수 있습니다. - 일부 메서드는 비 정적 (및 반환 값)입니다.도움 말? - TIA
는 "당신 만의 AppDomain에 대한 어셈블리의 한 버전을 가질 수 있습니다"사실이 아니다. 하나의 어셈블리에서 두 버전의 어셈블리를 참조 할 수도 있습니다. 자세한 내용은 extern 별칭을 참조하십시오.이 예제는 Google에서 기능의 예와 함께 가장 먼저 나타납니다. http://blogs.msdn.com/ b/ansonh/archive/2006/09/28/extern-alias-walkthrough.aspx – Graham
두 AppDomains를 사용하면 설명 된 문제에 대한 해결책입니다. – Graham
맞아요, 대답이 업데이트되었습니다! –