At the moment I have something like this for a registration-free COM setup:
a.exe
(depends onb.dll
; does not directly depend onc.dll
)a.exe.manifest
(declares registration-free COM registration forc.dll
)b.dll
(depends onc.dll
. For example, a .NET TMBIMP generated COM wrapper)c.dll
(some COM implementation DLL)c.dll.manifest
(registration-free COM manifest forc.dll
)
Is it possible to change this scheme such that the manifest that is on a.exe
is instead placed on b.dll
? I'd like other programs to be able to reference b.dll
without having to add additional manifests everywhere if possible.
(a.exe.manifest
has this content:
<file name="msdia110.dll">
<comClass description="Debug Information Accessor" clsid="{761D3BCD-1304-41D5-94E8-EAC54E4AC172}" threadingModel = "Both"/>
</file>
)
and c.dll.manifest
was generated using the manifest tool mt.exe
. (and is far too long to include here)
b.dll
isn't autogenerated. (tlbimp
gets quite a lot wrong here and we had to decompile, mess with the IL, and recompile) – Hyperopiab/c.dll.manifest
who do you think would be responsible for respecting the manifest (file) of the dll? The DLL will be loaded by the "loader" and if that machinery doesn't put the manifest into the applications Activation Context, then it wont be used. And as far as I know, the loader will not do anything about reg-free COM manifest stuff, although it will check the manifest of the DLL for DLL dependencies (like msvcr etc.). – Sot