您的“问题”是安装了一个策略文件,该文件指定可以将 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
但是我不确定如何构造绑定重定向。即,考虑到策略文件重定向,我不确定您是否需要将旧版本重定向回其本身,或将新版本重定向回旧版本。或者是什么。可能需要一些尝试和错误。
.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 版本重定向到特定版本的简单方法。