Mef에서 특정 (확장 가능) 기능을로드하는 응용 프로그램이 있습니다. 이러한 모듈 (타사)은 타사 컨트롤 (Telerik)을 사용하기 때문에 사용자가인지 한로드 시간 (위에서 언급 한 컨트롤을 사용하여 폼을 열 때)을 최소화하려는 경우 이러한 Mef 모듈이 참조하는 어셈블리를 미리로드해야합니다.AppDomain의 .Load 경로에 Mef의 어셈블리 경로 추가
내가하고있는 일은 Assembly.GetReferencedAssemblies (..) 메서드를 사용하여 Mef 모듈 당 참조 된 어셈블리의 이름을 가져 와서 Assembly.Load (..)하려고 시도하는 것입니다.
모듈이 (일반적으로 ExecutingAssembly 경로와 다른) 파일 시스템의 어딘가에 위치하므로 Gac에없는 Mef 모듈에 대한 참조는로드에 실패합니다.
내 AppDomain.CurrentDomain의 어셈블리로드 경로를 수정할 수있는 방법이 있습니까? AppDomain.AssemblyLoad 이벤트를 알고 있지만 각 모듈이 서로 다른 디렉터리에있을 수 있으므로이를 활용하는 것은 약간 번거로운 작업입니다.
감사합니다. Matthew. AppDomain.AppendPrivatePath를 시도했지만 그 방법이 작동하지 않고 흥미롭게도 그 메서드를 호출 한 후 AppDomain의 .PrivatePath 속성은/여전히 비어 있고로드가 여전히 실패합니다. 또한 app.config에서 부분을 발견했지만 문제는 경로가 '동적'이라는 것입니다. 제가 골머리를 앓고있는 것은 MEF가 이것을 처리하는 방법입니다. 왜냐하면 .Net이 필요한 어셈블리 참조의 게으른로드를 정상적으로 수행하도록하기 때문에 완벽하게 작동합니다. –