2012-03-12 2 views
1

MEF를 사용하여 확장 가능한 메트로 앱을 작성하려고했습니다. 로컬 확장 (현재 어셈블리 내부)으로 작업하게했습니다. 이제 외부 dll을로드하려고합니다. DirectoryCatalog은 .net 4.5에없는 것 같습니다. 그래서 ApplicationCatalog을 사용하려고 시도했지만 SatisfyImportsOnce : Assembly.LoadFrom is not supported in AppX.을 호출하는 동안 다음 오류가 발생했습니다. 무슨 일이 일어나고메트로 앱에서 MEF를 사용하여 dll을로드/가져 오는 방법은 무엇입니까?

var catalog = new AssemblyCatalog(GetType().GetTypeInfo().Assembly); 
ApplicationCatalog catApp = new ApplicationCatalog(); 
AggregateCatalog cat = new AggregateCatalog(catalog, catApp); 
_compositionService = cat.CreateCompositionService(); 
_compositionService.SatisfyImportsOnce(this); 

어떤 제안 : 여기

나에게 코드입니까?

나는 Appx 디렉토리에 dll을 놓고 관리자로 VS11 베타를 실행했습니다.

답변

1

나는 MEF 포럼에서 몇몇 지지자와 이야기를 나누었고 그는 ApplicationCatalog가 메트로 앱에서 사용될 수 없다는 것을 확인했다. 그래서이 문제는 해결할 수 없지만 닫힐 수 있습니다. Source Thread

1

외부 라이브러리가 Metro의 허용 된 샌드 박스 외부에 도달했습니다. Metro 환경의 .NET 프레임 워크는 WP7 또는 Micro Framework와 유사하게 제한적입니다. 많은 일들이 삭감됩니다. 이러한 제한된 라이브러리를 사용하여 외부 DLL을 빌드하지 않으면 컴파일러에서 해당 DLL을 사용할 수 없습니다.

+0

Windows Metro 스타일 클래스 라이브러리로 dll 프로젝트를 만들었습니다. –

+1

아, 죄송합니다. 나는 그것을 놓쳤습니다. 출력을 WinMD 파일로 설정 했습니까? http://sempf.net/post/Referencing-a-C-class-library-in-HTML5-Metro-UI.aspx –

+0

WinMD 파일은 WinRT 인터페이스 만 구현할 수 있기 때문에 아니 었습니다. 그러나 내 수업은 핵심 프로젝트의 IExtension 인터페이스를 구현합니다 (링크 된 기사에서 마지막 문장 참조). 가져 오기/내보내기를 위해이 인터페이스가 필요하다고 생각합니까? 아니면 내가 놓친 다른 방법이 있습니까? –

관련 문제