В настоящее время я использую MEF и DirectoryCatalog для загрузки некоторых частей из некоторых расширенных DLL.Это работает для меня и большинства людей, которые используют программу, но некоторые пользователи испытывают, что детали вообще не загружаются.Собирая некоторую отладочную информацию, кажется, что MEF действительно загружает библиотеки DLL (их перечисляет каталог catalog.LoadedFiles), но в каталоге нет частей. Детали.
Один пользователь работает на XP sp3, а другой на Windows 7, поэтому я не думаю, что проблема в ОС.Кто-нибудь имеет представление о том, почему это происходит?
Ниже приведен код, который фактически создает контейнер, на случай, если он поможет с чем-либо.
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;
}