.net net中的绑定重定向问题

.net net中的绑定重定向问题,.net,binding,assemblies,.net,Binding,Assemblies,我有一个名为“MyAssembly”的类库,它在内部引用3.1.1.0版的a.dll和b.dll;我已经构建了输出MyAssembly.dll的项目。在另一个系统(box)上,我创建了一个web应用程序项目并引用了MyAssembly.dll。新系统有a.dll和b.dll 4.0.0的新版本;我在web.config中使用了绑定重定向,如下所示。但是仍然无法编译web应用程序。它说缺少程序集引用a.dll,版本3.1.1.0 有人能帮助解决这个问题吗 谢谢, 苏雷什 这应该行得通 <r

我有一个名为“MyAssembly”的类库,它在内部引用3.1.1.0版的a.dll和b.dll;我已经构建了输出MyAssembly.dll的项目。在另一个系统(box)上,我创建了一个web应用程序项目并引用了MyAssembly.dll。新系统有a.dll和b.dll 4.0.0的新版本;我在web.config中使用了绑定重定向,如下所示。但是仍然无法编译web应用程序。它说缺少程序集引用a.dll,版本3.1.1.0

有人能帮助解决这个问题吗

谢谢, 苏雷什

这应该行得通

<runtime>  
 <dependentAssembly>  
   <assemblyIdentity name="MyAssembly" publicKeyToken="12233444"/>  
   <bindingRedirect oldVersion="3.1.1.0" newVersion="4.0.0.0"/>  
 </dependentAssembly>  
</runtime>  

另一个建议:从配置标记中删除名称空间:

而不是

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

试一试


您正在web应用程序中使用MyAssembly。绑定重定向将用于此程序集,而不是MyAssembly使用的程序集。检查MyAssembly.dll的清单,它应该引用a.dll的3.1.1.0版本,因此显示编译器错误。参考版本4.0.0.0的.dll构建MyAssembly,然后在web应用程序中使用MyAssembly。这就行了。

试着这样做:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="a.dll"
                      publicKeyToken="{put a.dll publicKeytoken here}"
                      culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-99.99.99.99"
                     newVersion="4.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="b.dll"
                      publicKeyToken="{put b.dll publicKeytoken here}"
                      culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-99.99.99.99"
                     newVersion="4.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>

另外,转到应用程序的引用,右键单击a.dll和b.dll,转到属性并检查“特定版本”是否设置为False


希望能有帮助。

这对我来说完全奏效了。注意:
configuration
标记上不需要名称空间。并且必须在
assemblyBinding
标记上有一个命名空间

如果它返回它是有效的,那么它将被强命名

资料来源:

我也这么做了。但是没有运气。在ide中编译项目时,给出错误提示“是否缺少assemblyreference a.dll 3.1.1.0配置标记不包含xmlns属性。没有LuckIt在我这边工作,谢谢。我的问题是,当删除xmlns属性时,它为什么会工作?这完全修复了我在web项目中忽略绑定重定向的问题。非常感谢。我爱你。你完全救了我的命。我从
configuration
标记中删除了名称空间,它就这样工作了!非常感谢!assemblyBinding中缺少命名空间
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="a.dll"
                      publicKeyToken="{put a.dll publicKeytoken here}"
                      culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-99.99.99.99"
                     newVersion="4.0.0.0"/>
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="b.dll"
                      publicKeyToken="{put b.dll publicKeytoken here}"
                      culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-99.99.99.99"
                     newVersion="4.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>
<!-- important: no namespace -->
<configuration> 
  <runtime>
    <!-- important, must have this namespace -->
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly>
        <assemblyIdentity name="Strongly.Named.Assembly" publicKeyToken="xxx" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
sn -vf "path-to-assembly.dll"