Зависимости MEF и управление версиями

У меня есть система, которая использует MEF для загрузки частей. Каждая из этих частей полагается на базовую библиотеку. При сборке проекта я добавляю номер версии к файлам .dll следующим образом:

  • part1-1.0.0.0.dll
  • part2-1.0.0.0.dll

Кроме того, существует приложение, которое выполняет Состав МЭФ. Он также использует основную библиотеку. Я обнаружил, что могу просто развернуть «частичные» библиотеки DLL, и композиция работает нормально, потому что приложение уже загрузило основную библиотеку, на которую полагаются части. Итак, моя файловая система выглядит примерно так:

  • /parts/part1-v1.dll
  • /parts/part2-v1.dll
  • composer-v1.exe
  • core-v1.exe

Проблема, с которой я столкнулся, заключается в том, как управлять версиями ядра и частей. Допустим, я делаю обновление ядра, и одной из частей. Затем я развертываю изменения. Теперь моя файловая система может выглядеть примерно так:

  • /parts/part1-v1.dll
  • /parts/part1-v2.dll
  • /parts/part2-v1.dll
  • composer-v1. exe
  • core-v1.dll
  • core-v2.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();
    }
}
11
задан Lance Fisher 10 February 2011 в 21:01
поделиться