绑定重定向失败 - 不同的publicKeyToken

时间:2011-10-27 08:42:09

标签: c# .net assemblies

我有一个在开发环境中引用此程序集的应用程序:

name="Microsoft.Data.SqlXml" culture="neutral" publicKeyToken="89845dcd8080cc91" version="9.0.242.0"

但是,实时服务器包含此库的旧版本:

name="Microsoft.Data.SqlXml" culture="neutral" publicKeyToken="b77a5c561934e089" version="3.2.2917.0"

如您所见,publicKeyToken与众不同。我已将bindingRedirect添加到app.config:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Microsoft.Data.SqlXml" culture="neutral" publicKeyToken="89845dcd8080cc91" />
            <bindingRedirect oldVersion="9.0.242.0" newVersion="3.2.2917.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

但我仍然收到错误:

  

未处理的异常:System.IO.FileNotFoundException:无法加载   file或ass embly'Microsoft.Data.SqlXml,Version = 3.2.2917.0,   Culture = neutral,PublicKeyToke n = 89845dcd8080cc91'或其中一个   依赖。该系统找不到指定的文件。文件名:   'Microsoft.Data.SqlXml,Version = 3.2.2917.0,Culture = neutral,PublicKe   yToken = 89845dcd8080cc91'---&gt; System.IO.FileNotFoundException:可以   不加载文件或程序集'Microsoft.Data.SqlXml,Version = 9.0.242.0,   Culture = neutral,Publi cKeyToken = 89845dcd8080cc91'或其中一个   依赖。该系统找不到指定的文件。文件名:   'Microsoft.Data.SqlXml,Version = 9.0.242.0,Culture = neutral,PublicKey   标记= 89845dcd8080cc91'

在这种情况下,有没有办法重定向到旧版本的库?

1 个答案:

答案 0 :(得分:8)

如果公钥不同,则无法重定向程序集我担心,您需要针对旧版本重新编译并删除重定向。