Я создаю dll (A.dll
), который изолирован (ISOLATION_AWARE_ENABLED
), зависит от dependency.dll
и имеет файл манифеста:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<assemblyIdentity name="my.assembly.name" version="1.0.0.0" type="win32"/>
<file name="A.dll"></file>
<file name="dependency.dll"></file>
</assembly>
A.dll
загружается приложением app.exe
, которое само зависит от другой версии dependency.dll
. Манифест гарантирует, что обе версии dependency.dll
будут использоваться параллельно. Пока проблем нет.
Теперь A.dll
загружает другую DLL B.dll
через LoadLibrary
. B.dll
загружается из стороннего каталога, зависит от dependency.dll
и фактически требует использования версии dependency.dll
, используемой A.dll
, которая уже находится в памяти.
Проблема в том, что B.dll
использует версию dependency.dll
, используемую app.exe
, поскольку это была первая версия модуля с таким именем, которая была загружена в память.
Есть ли способ заставить B.dll
использовать версию dependency.dll
, которая была загружена A.dll
?
Язык - C ++, если это актуально.