У меня есть система, которая использует MEF для загрузки деталей. Каждая из этих частей основывается на основной библиотеке. Когда я создаю проект, я добавляю номер версии в DLL файлы следующим образом:
- part1-1.0.0.0.dll
- part2-1.0.0.0.dll
Кроме того, есть приложение, которое выполняет композицию MEF. Он также использует основную библиотеку. Я обнаружил, что я могу просто развернуть DLL "part", и композиция прекрасно работает, потому что приложение уже загрузило основную библиотеку, на которую полагаются части. Поэтому моя файловая система выглядит примерно так:
- /parts/part1-v1.dll
- /parts/part2-v1.dll
- композитор-v1.exe
- ядро-v1.exe
У меня возникла проблема с управлением версиями ядра и частей. Предположим, что я делаю обновление для ядра и одной из частей. Затем я развертываю изменения. Итак, теперь моя файловая система может выглядеть примерно так:
- /parts/part1-v1.dll
- /parts/part1-v2.dll
- /parts/part2-v1.dll
- композитор-v1.exe
- ядро-v1.dll
- ядро-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();
}
}