2009-09-04 21 views
3

我需要添加一个特定版本的GDIPlus的依赖关系。这是GDI +的版本,我想:WinSxS:如何依赖特定版本的gdiplus.dll?

alt text http://i31.tinypic.com/2qiv57t.jpg

我想确保我使用这个版本为特定的兼容性原因。

我已经添加清单装配到我的可执行文件,定义上的版本GdiPlus我的扶养:

<dependency> 
    <dependentAssembly> 
     <assemblyIdentity 
      type="win32" name="Microsoft.Windows.GdiPlus" 
      pubicKeyToken="6595b64144ccf1df" 
      version="5.1.3102.2180" processorArchitecture="x86" 
      language="*" /> 
    </dependentAssembly> 
</dependency> 

除了当我跑我的应用程序,Windows的融合装载机给我的一些其他版本

alt text http://i29.tinypic.com/hrwitz.jpg

它给我的版本5.02.600:从侧面由端文件夹,我可以在Process Explorer中看到的gdiplus.dll 2.18005,而不是5.1.3102.2180

所以问题是:我如何依赖于特定版本的Windows DLL?

+1

我拼错'依赖',我会警惕到这一点。但是当我提到自己时,我总是使用小写的“我”。 – 2009-09-04 19:20:41

+0

如果您反对,那么知道原因会很有帮助。这个问题“不清楚还是没有帮助”? – 2009-11-26 15:25:22

回答

2

贵“的问题”,使得它,是有策略文件安装指定为5.1.3102.2180请求可以被重定向到5.02.6002.18005

这是,通常是一件好事。它允许应用程序指定它们在清单中构建的版本,但是当引入重要的安全修复程序时,操作系统可以将应用程序重定向到兼容版本。

因此,这里发生的事情是,您的应用程序将在任何只安装了5.1的PC上与GDI + 5.1链接。但任何具有5.2 GDI +的PC,您都将被重定向到该目标。

如果你确实有一个诚实善良的理由,为什么你要使用5.1,即使当5.2可用...我想你可以使用应用程序配置文件来管理。

创建一个名为文件,yourapp.exe.config - 如果您的应用程序多数民众赞成在一个模块中导入GDI +是一个DLL,那么这将是thedll.dll.2.config

我不能确定如何构建然而,bindingRedirect。即给定策略文件重定向,我不知道您是否需要将旧版本重定向回自己,或将新版本重新定向回旧版本。或者是什么。可能需要一些试验和错误。

.config文件中的数据看起来与清单文件中的数据几乎完全相同。像这样的东西(它几乎完全模仿安装在winsxs中的策略文件的内容,即做你不想要的重定向)。

<configuration> 
    <windows> 
    <assemblyBinding xmlns=...> 
     <dependentAssembly name="GdiPlus...> 
     <bindingRedirect oldVersion="5.1.x.x" newVersion="5.1.x.x"/> 

为了使 “oldVersion” 更容易,它支持多种语法的选择。所以

oldVersion="5.0.0.0-5.3.0.0" 

将是一个简单的方法来确保一整个GdiPlus版本重定向到一个特定的版本。

相关问题