我的应用程序使用一个版本的库 (a.dll),我使用另一个 DLL(b.dll),它又使用我使用的同一库 (a.dll) 的旧版本。我正在通过嵌入清单文件来构建应用程序。我使用的 DLL 也使用嵌入式清单文件。我的 WinSXS 文件夹中有两个版本的库。我的应用程序无法加载适当版本的 DLL。
拥有单独的清单文件(不嵌入 DLL)是否有助于解决问题?解决办法是什么?
您的情况正是 WinSxS 应该解决的情况。它应该可以工作。
或者:清单文件指向相同版本,或者其中一个清单文件未正确嵌入,或者
WinSxS 中的共享程序集是使用配置策略安装的,该策略自动将 v1.0 的请求重定向到 v1.1
需要一些澄清:App.exe 和 b.dll 是否隐式链接到 a.dll?或者他们通过 LoadLibrary 加载它。
如果 B.DLL 使用 LoadLibrary 显式加载 A.DLL,则需要将 ISOLATION_AWARE_ENABLED 添加到预处理器定义中,以确保 B.DLL 进行的 LoadLibrary 调用在正确的激活上下文中查找。否则,它们将在由 EXE 清单创建的默认激活上下文的上下文中生成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)