2014-02-11 1 views
0

MEF를 사용하여 확장 프로그램을로드하는 Outlook 플러그인이 만들어졌습니다. 확장은 모두 C# 클래스 라이브러리로 생성됩니다. Outlook 플러그인이 시작되면 네트워크 디렉토리의 모든 플러그인 DLL을 로컬 컴퓨터에 복사 한 다음 MEF를 통해로드합니다.여분의 DLL이있는 MEF

그들 중 하나는 MySql.Data.dll 라이브러리를 사용하고 있습니다. 그 DLL은 MEF가로드되는 DLL을 배치하는 디렉토리와 동일한 디렉토리에 복사되지만 작동하지 않습니다. 최종 사용자는 MySql DLL을 찾을 수 없다는 예외를받습니다.

MEF 가져 오기를 통해 포함 된 클래스 라이브러리에 필요한 추가 DLL을 배치하는 방법은 무엇입니까?

+0

어떤 카탈로그를 사용하고 있습니까? 샘플 코드 및 추가 오류 정보를 추가하십시오. –

+0

나는 AggregateCatalog()를 사용하고 있으며 AssemblyCatalog()에 전달하는 DLL의 루프를 반복합니다. 오류는 단지 "파일 또는 어셈블리 'MySql.Data, 버전 .....'을로드 할 수 없습니다. – Gargoyle

+0

fuslogvw.exe를 사용하여 어셈블리 로딩 오류를 진단 해보십시오. 누락 된 MySql.Data의 종속성 일 수 있습니다 –

답변

0

저는 프로젝트에서 MEF를 사용하지 않았지만 몇 가지 경우에 내 자신의 플러그인 아키텍처를 롤업해야했습니다. 시도 할 수있는 것은 AppDomain.AssemblyResolve 이벤트에 연결하는 것입니다. 해당 페이지에 예제가 얼마나 유용한 지 모르지만 이벤트 args에서 어셈블리 이름을 검사하여 플러그인을로드하는 동일한 폴더에서 해당 어셈블리를로드하려고 시도 할 수 있습니다.

+0

감사합니다.이 문제는 해결되었습니다. 주어진 어셈블리를 가져 와서 Assembly.LoadFrom()을 실행 한 다음 결과를 반환 했으므로 이제는 큰 문제가 없습니다. – Gargoyle