현재 일부 확장 DLL에서 일부 부품을로드하는 데 MEF와 DirectoryCatalog를 사용하고 있습니다. 저와이 프로그램을 사용하는 대부분의 사람들에게 효과적이지만 일부 사용자는 전혀로드되지 않는 부분을 경험합니다. 일부 디버그 정보를 수집하면 MEF가 DLL (catalog.LoadedFiles가 나열 함)을로드하지만 catalog.Parts에 나열된 부분이없는 것으로 보입니다.MEF 부품 목록이 비어있는 경우가 있습니다.
한 명의 사용자가 XP sp3에 있고 한 대의 사용자가 Windows 7에 있기 때문에 OS가 문제라고 생각하지 않습니다. 왜 이런 일이 일어날 지에 대한 생각을 가진 사람이 있습니까?
다음은 실제로 도움이 될 수 있도록 컨테이너를 실제로 만드는 코드입니다.
private static IEnumerable<Task> CreateTypes()
{
CompositionContainer container = GetContainer();
var exp = container.GetExports<Task>();
return exp.Select(e => e.Value);
}
private static CompositionContainer container;
public static CompositionContainer GetContainer()
{
if (container != null)
return container;
DirectoryCatalog catalog = new DirectoryCatalog(ExtensionDirectory, "*.dll");
container = new CompositionContainer(catalog);
return container;
}
일부 코드가 도움이 될 것입니다. –
컨테이너를 만드는 동안 오류가 있습니까? – blindmeis
아니요, 컨테이너를 만드는 것이 좋습니다. 일부 사람들에게는 부품 목록이 비어있는 것입니다. 얼마나 도움이 될지 모르지만 코드로 업데이트했습니다. – Jamie