gpt4 book ai didi

c# - 用于编译的 .NET 绑定(bind)重定向

转载 作者:可可西里 更新时间:2023-11-01 08:42:58 25 4
gpt4 key购买 nike

当我尝试编译一个实用程序时出现以下错误,该实用程序使用已部署到我们客户端的文件。

Assembly '*A* version 2.0.1.2' uses '*B* version 1.1.39.0' which has a higher version than referenced assembly '*B* version 1.1.32.0'.

我们的客户端可以毫无问题地使用这些 DLL,因为我们有一个绑定(bind)重定向配置文件,它在运行时生效:

<dependentAssembly>
<assemblyIdentity name="*B*" publicKeyToken="..." culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-65535.65535.65535.65535" newVersion="1.1.32.0" />
</dependentAssembly>

为了提供一点背景知识,DLL 存在于不同的解决方案中,因此一些引用是文件引用而不是项目引用,这正是我不得不忍受的!

是否有适用于编译时的等效绑定(bind)重定向?

我尝试使用调试 DLL(版本 1.0.0.0)进行编译,并将源回滚到上面的相关版本,但是在运行时出现以下错误:

The located assembly's manifest definition does not match the assembly reference

也许构建服务器的配置与我的机器不同,但无论如何这似乎不起作用......

最佳答案

我怀疑是否有可能按照您的意愿“修复”它。如果您阅读该编译错误 ( https://msdn.microsoft.com/en-us/library/416tef0c.aspx) 的文档,您会发现您可以更新代码以使用相同的版本,或者在编译期间引用两个版本(在您的情况下不是一个选项)。

想象一下,版本 1.0.0.0 包含方法 MyMethod(),但版本 1.0.0.1 包含 MyMethod(string),并且第一个版本由程序集 A 使用,第二个版本由您正在编译的程序集使用。你希望编译器如何解决这个问题?在运行时,当您使用绑定(bind)重定向时,仍然只会加载一个 版本的程序集。在这里,您不拥有程序集 A 的代码(您正在引用它,而后者又引用 MyMethod),并且对程序集 1.0.0.0 的引用嵌入在 A 的 list 中。

长话短说 - 我想为您解决此问题的唯一方法是使用与您引用相同版本 B 的程序集 A。

关于c# - 用于编译的 .NET 绑定(bind)重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21885889/

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