我创建了一个简单的Win32应用程序来演示UXtheme在XP上包含一个清单依赖于ver 6 commctl32.dll 然后我创建了一个简单的Win32 DLL,使用ISOLATION_AWARE_ENABLED
和具有嵌入式清单指定的Comctl32.dll每个应用程序的配置文件bindingRedirect不适用于Dll
的两个版本5和6我成功得到了EXE和DLL使用使用这种方法COMCTL32.DLL的不同版本进行了测试。无论是使用5和DLL版本6的exe,反过来。
于是,我重新设置应用程序和DLL有COMCTL版本5清单的依赖。并引进了一个应用程序配置文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
<windows>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" processorArchitecture="amd64" publicKeyToken="6595b64144ccf1df"/>
<bindingRedirect oldVersion="5.82.7100.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</windows>
</configuration>
现在,当我跑我的应用程序,这些应用程序显然被重定向到commctl V6 - 对话显然使用启用XP的Uxtheme显示。 但是,该DLL没有被重定向,并且正在使用commctl的非主题版本5。
没有为文档中做bindingRedirects没有每个DLL配置文件不在话下。试图创造一个并不会做任何事情。
我也知道做一个bindingRedirect从程序集的一个主要版本到另一个不是支持的方案,但我真的只是使用commctl32作为测试机制的一个明显的简单方法。
如何重定向一个dll的依赖程序集的版本?
谢谢,这救了我小时。这是记录在任何地方? – 2011-03-28 12:58:31
是和不是。它的文件记录在各地。 – 2011-03-28 13:22:38