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

标签: dll C#
发布时间: 2013/12/3 20:06:28
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 2 的程序集可以调用它们 A 和 B。我已经给他们分配强名称和现在,问题就出现程序集 B 找旧版本的程序集 A.*EDIT2: 如果删除了 AssemblyB 问题仍然存在,所以它可能只是在 VS2008 找旧版本吗?此外通过 fusionlog 我看到下面的警告: 警告应用程序配置文件绑定重定向不允许的。这是否有与它吗?*

得到了多个错误的同一种类,这里的一段:

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

这里发生了什么?

解决方法 1:

一些 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>
赞助商