gpt4 book ai didi

c# - 引用旧 dll 的另一个程序集

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:29 24 4
gpt4 key购买 nike

我有 2 个程序集,我们称它们为 A 和 B。我已经为它们指定了强名称,现在问题出现了,程序集 B 正在寻找旧版本的程序集 A。**EDIT2:如果我删除 AssemblyB,问题仍然存在,那么可能只是 VS2008 在寻找旧版本?同样通过 fusionlog,我看到以下警告:wrn application configuration file binding redirects disallowed。这有什么关系吗? **

我收到多个相同类型的错误,这里是一个片段:

You must add a reference to assembly 'AssemblyA, Version=1.2.4737.25316, Culture=neutral, PublicKeyToken=null'.

项目中名为 AssemblyA 的强名称显示了以下属性: enter image description here

在 app.config 中我放置了这段代码:

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="AssemblyA" culture="neutral"
publicKeyToken="a22e30ac6a0edfc0"/>
<bindingRedirect oldVersion="1.2.4737.25316" newVersion="1.3.0.19440"/>
</dependentAssembly>
</assemblyBinding>
</runtime>

但这行不通。我可以访问这两个程序集的源代码。

编辑:如果我删除强命名并将旧的(弱命名的)dll 添加到项目中,它将给出一个询问强命名版本的错误

You must add a reference to assembly 'AssemblyA, Version=1.3.0.19440, Culture=neutral, PublicKeyToken=a22e30ac6a0edfc0'.

这里发生了什么?

最佳答案

一些 DLL 仍然引用其他 DLL 的旧(弱命名)版本。幸运的是,程序集带有源代码,所以我不得不重新编译所有内容,包括 key 。

在那之后出现另一个错误“定位的程序集的 list 定义与程序集引用不匹配”

为了解决这个问题,我在 app.config 中添加了以下内容。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<publisherPolicy apply="no" />
<assemblyIdentity name="Assemblyname" culture="neutral" publicKeyToken="3a5628535d42dbed"/>
<bindingRedirect oldVersion="1.3.0.15233" newVersion="1.3.0.40647" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

关于c# - 引用旧 dll 的另一个程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15679577/

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