WinSxS文件:如何采取的gdiplus.dll特定版本的依赖?(WinSxS: How to t

2019-07-04 21:52发布

我需要添加GDIPlus的特定版本的依赖。 这是GDI +的版本,我想:

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

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

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

除了当我运行我的应用程序,Windows的融合装载机给我从侧面由端文件夹,我可以在Process Explorer中看到的gdiplus.dll其他一些版本:

它给我的版本5.02.6002.18005,而不是5.1.3102.2180。

所以,问题是:我如何采取一个Windows DLL的特定版本的依赖?

Answer 1:

您的“问题”,使得它,是有安装了政策文件,该文件规定,对于5.1.3102.2180请求可以被重定向到5.02.6002.18005

这是,通常是一件好事。 它可以让应用程序在其清单中指定他们建立对版本,但推出的重要安全补丁的时候,操作系统可以重定向到应用程序兼容的版本。

那么,什么将要发生在这里的,你的应用程序会已经只有5.1安装在任何PC上对GDI + 5.1链接。 但与5.2 GDI +的任何电脑,你会被重定向到。

如果你有一个诚实善良之所以要使用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版本的整个范围重定向到一个特定版本。



文章来源: WinSxS: How to take dependency on specific version of gdiplus.dll?