我創建了一個簡單的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