Как указать путь зависимостей детали с помощью MEF / System.ComponentModel.Composition? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть работающее в данный момент приложение (Consuming Application), которое сканирует набор каталогов для плагинов (частей). Все элементы, которые необходимо подключить, наследуются от одного и того же интерфейса (IPlugIn). Эти элементы в каталогах имеют разные проекты, которые предоставляют библиотеки DLL и зависимости.

Однако, если для плагина требуется Unity 4.0. и приложение «Потребление» использует Unity 5.0 (пример зависимости), приложение «Потребление» пытается создать плагин с Unity 5.0, а не 4.0. 4.0 был тем, что плагин был скомпилирован изначально.

Вопрос: Как я могу заставить Приложение-Потребитель составлять плагин с версией Unity 4.0, с которой был создан плагин, а не с версией 5.0, с которой было создано Приложение-Потребитель ???

Я отсканировал литературу по MSDN, но расшифровать ее довольно сложно. Поиск в Интернете практически ничего не дал (возможно, это мои ключевые слова)

AggregateCatalog catalog = new AggregateCatalog();

// Configured Directories
var mefDirectoriesDefined = Properties.Settings.Default.ActionDirectories;

var mefDirectories = mefDirectoriesDefined.Split(',');

foreach (var directory in mefDirectories)
{
    if (Directory.Exists(directory))
    {
        var directoryCatalog = new DirectoryCatalog(directory, "*.Plugin*");
        catalog.Catalogs.Add(directoryCatalog);
    }
}

CompositionContainer container = new CompositionContainer(catalog);
container.ComposeParts(this);

Опять же, приложение-потребитель формирует части в каталоге, но не с правильными версиями зависимостей.

Спасибо за любую помощь, которую вы можете оказать!

...