다음은 설정입니다.어셈블리를 퍼지 방법으로 해결
순수 DotNET 클래스 라이브러리는 관리되지 않는 데스크톱 응용 프로그램에 의해로드됩니다. 클래스 라이브러리는 플러그인의 역할을합니다. 이 플러그인로드 작은 아기 자신의 플러그인 (모든 DOTNET 클래스 라이브러리), 그리고 그 작은 아기 플러그인 참조를 할 때 문제가 발생 한 후, 바이트 스트림으로 메모리에
Assembly asm = Assembly.Load(COFF_Image);
을 DLL을 읽어 그렇게 다른 dll에. 디스크에서 직접로드되지 않고 메모리를 통해로드되기 때문에 프레임 워크는 종종 이러한 참조 된 어셈블리를 찾을 수 없으므로로드 할 수 없습니다.
내 프로젝트에 AssemblyResolver 처리기를 추가 할 수 있으며 이러한 참조 된 어셈블리가 이전에 삭제 된 것을 볼 수 있습니다. 이 참조 된 어셈블리를 디스크에서 찾을 수있는 위치에 대해 상당히 좋은 생각이 있지만 Assmely로드하는 것이 올바른지 확인하려면 어떻게해야합니까?
요약하면 System.ResolveEventArgs.Name 필드에서이 DLL이 숨길 수있는 모든 폴더 목록이 있다고 가정하면 dll 파일 경로로 어떻게 안정적으로 이동합니까?
샘, 이건 좀 낭비가 아닐까요? 올바른 조립품을 찾을 때까지 조립할 필요가 없나요? –
우리가 해결하려고하는 어셈블리와 같은 이름을 가진 dll 만로드합니다. 내가했을 때 그것은 내가 필요한 1 dll을로드하는 것을 의미하지만 dll과 어셈블리가 동일한 이름을 가지지 않으면 모든 dll을로드하고 찾고있는 이름과 어셈블리 이름을 비교해야합니다. –
그리고 내 AppDomain을 오염시키는 것을 막을 수있는 유일한 방법은 다른 AppDomain을 만들고 먼저로드하는 것입니다. –