我需要添加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的特定版本的依赖?
您的“问题”,使得它,是有安装了政策文件,该文件规定,对于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版本的整个范围重定向到一个特定版本。