3

我有 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 显示以下属性: 在此处输入图像描述

在 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'.

这里发生了什么事?

4

1 回答 1

3

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

之后出现了另一个错误,即“定位的程序集的清单定义与程序集引用不匹配”

为了解决这个问题,我在 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>
于 2013-03-28T23:06:43.757 回答