У меня есть система, которая использует MEF для загрузки частей. Каждая из этих частей полагается на базовую библиотеку. При сборке проекта я добавляю номер версии к файлам .dll следующим образом:
Кроме того, существует приложение, которое выполняет Состав МЭФ. Он также использует основную библиотеку. Я обнаружил, что могу просто развернуть «частичные» библиотеки DLL, и композиция работает нормально, потому что приложение уже загрузило основную библиотеку, на которую полагаются части. Итак, моя файловая система выглядит примерно так:
Проблема, с которой я столкнулся, заключается в том, как управлять версиями ядра и частей. Допустим, я делаю обновление ядра, и одной из частей. Затем я развертываю изменения. Теперь моя файловая система может выглядеть примерно так:
Как я могу убедиться, что part1-v1.dll использует core-v1.dll, а part1-v2.dll использует core-v2.dll ? Мне нужно загрузить все версии частей и использовать соответствующую версию ядра.
Классы частей выглядят примерно так:
[Export(typeof(IPart))]
public class Part1
{
public string GetSomethingFromCore()
{
return Core.GetSomethingFromCore();
}
}
[Export(typeof(IPart))]
public class Part2
{
public string GetSomethingFromCore()
{
return Core.GetSomethingFromCore();
}
}