我有以下情况:
- 在C#链接A托管DLL中开发的可执行文件,该DLL调用另一个第三方DLL(并排加载)。EXE不直接使用第三方DLL中的任何对象。
组件之间的关系是:
exe->> mydll>> 3rdpartydll
我想仅在mydll.manifest(用mt.exe编译)中设置第三方dll的参考: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的依赖。
时起作用。但是,在这种情况下,每次第三方都会更改版本(也适用于小修复),我需要重新编译EXE将清单嵌入其中。
我试图在这种情况下深入寻找一些实用的例子,但我什么也没找到。有什么参考或实践示例吗?
系统上的3rdpartydll在哪里?是在与EXE的同一文件夹中吗?而不是在exe中添加3rdpartydll的依赖性。manifest确保3rdpartydll与Exe的文件夹中。