Я занимаюсь разработкой приложения WPF, которое поддерживает функции подключаемых модулей MEF. Он находит плагин путем получения экспорта из DirectoryCatalog, например
DirectoryCatalog catalog = new DirectoryCatalog(@".\libs", fileName);
CompositionContainer container = new CompositionContainer(catalog);
BaseModel.Instance.ImportedPlugins = container.GetExports<IExternalServiceProvider>();
Итак, я хотел, чтобы он загружал FILENAME.dll внутри подпапки с именем libs, Однако когда файл dll с именем FILENAME.dll существует и в основной папке, и в папке libs, этот код загружает FILENAME.dll из основной папки .
Debug
ㄴlibs
ㄴFILENAME.dll(latest build) - This one should be loaded
ㄴApp.exe
ㄴFILENAME.dll(old build) - but this one is loaded instead
Я пробовал несколько сценариев ios, но меня это сбивает с толку.
CASE 1
Debug
ㄴlibs
ㄴFILENAME.dll(latest version)
ㄴApp.exe
ㄴFILENAME.dll(old version)
-> загружена старая версия
CASE 2
Debug
ㄴlibs
ㄴFILENAME.dll(latest version)
ㄴApp.exe
ㄴFILENAME.dlllll(old version)
-> загружена последняя версия
CASE 3
Debug
ㄴlibs
ㄴFILENAME.dll(latest version)
ㄴApp.exe
ㄴWRONGFILENAME.dll(old version)
-> загружена последняя версия
CASE 4 (наиболее запутанный случай)
Debug
ㄴlibs
ㄴWRONGFILENAME.dll or FILENAME.dlllll(latest version)
ㄴApp.exe
ㄴFILENAME.dll(old version)
-> не удалось загрузить ни одну из них
Я могу попробовать другой способ использования Каталога для решения этой проблемы с загрузкой, но я не могу найти, почему и как происходит Случай 4. Что я делаю не так?