首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WinSxS:如何依赖特定版本的gdiplus.dll?

WinSxS:如何依赖特定版本的gdiplus.dll?
EN

Stack Overflow用户
提问于 2009-09-04 19:11:09
回答 1查看 3.2K关注 0票数 4

我需要在特定版本的GDIPlus上添加一个依赖项。这是我想要的GDI+的版本:

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

我将程序集清单添加到可执行文件中,定义了对GdiPlus版本的依赖

代码语言:javascript
复制
<dependency>
   <dependentAssembly>
      <assemblyIdentity 
            type="win32" name="Microsoft.Windows.GdiPlus" 
            pubicKeyToken="6595b64144ccf1df" 
            version="5.1.3102.2180" processorArchitecture="x86"
            language="*" />
   </dependentAssembly>
</dependency>

除了我运行应用程序时,Windows的融合加载程序从并排文件夹中为我提供了一些其他版本的gdiplus.dll,我在Process中可以看到:

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

因此,问题是:如何将依赖于特定版本的Windows?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-05 15:01:25

您的“问题”是,已经安装了一个策略文件,指定对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,则为dll.dll.2.config

然而,我不知道如何构造bindingRedirect。例如,给定策略文件重定向,我不确定您是否需要将旧版本重定向到它本身,或者将新版本重定向到旧版本。不然会怎么样。可能需要一些尝试和错误。

.config文件中的数据看起来与清单文件中的数据几乎完全一样。类似这样的内容(它几乎完全模仿了winsxs中安装的策略文件的内容,即执行您不想要的重定向)。

代码语言:javascript
复制
<configuration>
  <windows>
    <assemblyBinding xmlns=...>
      <dependentAssembly name="GdiPlus...>
        <bindingRedirect oldVersion="5.1.x.x" newVersion="5.1.x.x"/>

为了更容易地选择"oldVersion“,它支持范围语法。所以

代码语言:javascript
复制
oldVersion="5.0.0.0-5.3.0.0"

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1381028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档