У меня следующая ситуация:
- Исполняемый файл, разработанный на C#, связывает управляемую библиотеку DLL, которая вызывает другую стороннюю библиотеку DLL (загружаемую параллельно). exe не использует напрямую какой-либо объект из сторонней DLL.
Отношения между компонентами:
EXE -->> myDLL >> 3rdPartyDLL
Я хотел бы установить ссылку на стороннюю DLL только в myDLL.manifest (собрав ее с помощью mt.exe) следующим образом: myDLL.manifest
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="myDLL"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="ThirdPartyDLL" version="1.0.0.0"/>
</dependentAssembly>
</dependency>
<file name ="myDLL.dll"/>
</asmv1:assembly>
Но когда я запускаю EXE, он вызывает исключение, потому что не находит 3partyDLL. Это работает только в том случае, если я также вставлю в EXE.manifest зависимость от 3rdPartyDLL.
Но в этом случае каждый раз, когда сторонняя DLL меняет версию (также для небольших исправлений), мне нужно перекомпилировать EXE, чтобы встроить в него манифест.
Я попытался найти какой-нибудь практический пример с таким сценарием, но ничего не нашел. Есть ли какая-либо ссылка или практический пример об этом?