1
У нас есть много продуктов, которые будут совместно использовать общие DLL. Для продукта я хотел бы указать конкретный список DLL для включения в каталог. Я знаю, что смогу это сделать:MEF - Список DLL для загрузки
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(typeof(MainWindow).Assembly));
string fullPath = Path.Combine(@"D:\Folder\With\Plugins", "SomePlugin.dll");
Assembly dll = Assembly.LoadFile(fullPath);
ComposablePartCatalog assemblyCatalog = new AssemblyCatalog(dll);
catalog.Catalogs.Add(assemblyCatalog);
_container = new CompositionContainer(catalog);
_container.ComposeParts(this);
Будет ли цикл в средней части для каждого конкретного файла лучшим методом?
Да, я знаю это, но это не значит, что каждая DLL, расположенная в этом каталоге, должна быть загружена для этого конкретного продукта. Вот почему мне нужен какой-то список для ** конкретных ** DLL, чтобы сказать: «Этот продукт использует библиотеки DLL A, B и C, в то время как этот другой продукт использует библиотеки DLL, B, C, D, E и F». –
Являются ли «продукты» различными приложениями? Тогда, возможно, они могут прочитать путь к папке из конфигурации и загрузить любую DLL в эту папку с помощью DirectoryCatalog. –