gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:31:57 30 4
gpt4 key购买 nike

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

alt text

我想确定我使用这个版本是出于特定的兼容性原因。

我已经在我的可执行文件中添加了一个程序集 list ,定义了我对 GdiPlus 版本的依赖:

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

除了当我运行我的应用程序时,Windows 的融合加载器从 Side-by-Side 文件夹中给我一些其他版本的 gdiplus.dll,我可以在 Process Explorer 中看到:

alt text

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

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

最佳答案

你的“问题”是安装了一个策略文件,指定对 5.1.3102.2180 的请求可以重定向到 5.02.6002.18005

这通常是一件好事。它允许应用程序在其 list 中指定构建时所针对的版本,但在引入关键安全修复程序时,操作系统可以将应用程序重定向到兼容版本。

因此,这里将要发生的是,您的应用程序将链接到任何仅安装了 5.1 的 PC 上的 GDI+ 5.1。但是任何带有 5.2 GDI+ 的 PC,你都会被重定向到那个。

即使 5.2 可用,如果您确实有充分的理由要使用 5.1...我认为您可以使用应用程序配置文件来管理它。

创建一个名为 yourapp.exe.config 的文件 - 如果您的应用程序中导入 GDI+ 的模块是一个 dll,那么它将是 thedll.dll.2.config

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

.config 文件中的数据看起来几乎与 list 文件中的数据完全一样。像这样的东西(它几乎完全模仿了安装在 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 版本范围重定向到特定版本的简单方法。

关于windows - WinSxS:如何依赖特定版本的 gdiplus.dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1381028/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com