응용 프로그램 (65 개 프로젝트가있는 솔루션)에서 참조 된 모든 어셈블리는 런타임에 Ninject 모듈이 있는지 분석됩니다 (일부 필터링이 적용됨). 너무). 모듈은 나중에 Ninject 커널에로드되고 각 모듈은 커널에 대한 바인딩을 선언합니다.ReflectionOnly 모드에서 새 AppDomain에 어셈블리를로드 할 때 메소드가 구현되지 않음
참조 된 어셈블리를 반사 전용 모드로 별도의 어셈블리로로드하는 로더를 채택했습니다. Ninject가 디렉토리에서 어셈블리를로드 할 수있는 것과 다른 점은 디렉토리에로드해서는 안되는 모듈이있는 어셈블리가 디렉토리에 포함될 수 있다는 것입니다. 그리고 맨 처음에는 참조 된 모든 어셈블리가로드되지 않습니다. 여기
Method 'BeforeLoad' in type 'Lekis.AppBase.Core.BLLBaseCore' from assembly 'AppBaseCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
일부 "재미"사실은 다음과 같습니다
문제는 loader (사챠 이발사에게 신용)이
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information
한 항목과 LoaderExceptions
와 약간의 어셈블리를로드 할 수 있다는 것입니다 :
BeforeLoad
은 가상이며 구현 지난 주에 로더 예외는 다른 메소드가 구현되지 않았고 (그 메소드는 가상이 아니 었습니다) 나중에 명시 적으로 구현했을 때 메소드가 찾을 수 없다고 말했습니다.- 지난 주 조립
AppBaseCore
의 대상 프레임 워크는 .NET 3.5이었고, 3 어셈블리는 - 지금 조립
AppBaseCore
의 대상 프레임 워크는 .NET 4로드하지 못했습니다 5 어셈블리는 - 모든 응용 프로그램에 괜찮로드하지 못했습니다 그렇지 않으면
ILSpy 및 ILDAsm을 사용하여 어셈블리를 검사 할 때 어셈블리에 아무런 문제가 없습니다.
이 시점에서 저는 정말로 분실되어이 문제에 접근하는 방법을 모릅니다.
도움을 주시면 감사하겠습니다.
감사
"메소드'BeforeLoad'는 가상이고 인터페이스 메소드의 구현입니다." 그래도 * 정말로 * 그래? [모든 대답은 여기에 있습니다.] (http://stackoverflow.com/questions/948785/)에서 버전 정렬/로딩과 충돌하지 않는지 확인하십시오.ILSpy/ILDAsm은 어셈블리가 구조적으로 유효하기 때문에 어떤 문제도보고하지 않습니다. –
고마워요, @ 제로 몬스터. 나는 그것을 볼 것이다. –