为什么Combres仍在寻找旧版本的System.Web.Mvc?

时间:2011-01-07 18:11:28

标签: asp.net-mvc assemblies asp.net-mvc-3 assembly-resolution combres

我在我的MVC 3 RC项目中使用Combres,并在将其部署到我的Web服务器时收到程序集绑定错误。

  

System.IO.FileLoadException
  无法加载文件或程序集'System.Web.Mvc,Version = 2.0.0.0 ,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

     

<%= Html.CombresLink("commonJs") %>

我的开发机器在GAC中有MVC 1和2组件,所以它在那里工作正常。 Web服务器在GAC中没有任何版本的MVC,我正在部署MVC 3程序集。我的项目引用了System.Web.Mvc的3.0.0.0版本,我在web.config中有以下部分:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
        </dependentAssembly>
        <dependentAssembly xmlns="">
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="2.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

我认为本节将告诉Combres使用版本3.0.0.0。为什么我的应用程序无法解析引用?

1 个答案:

答案 0 :(得分:2)

我认为绑定重定向不会链 - 你在某个地方引用了1.0,而你的配置告诉它加载2.0,这是不存在的。

您只需要一个绑定重定向,oldVersion设置为“1.0.0.0-2.0.0.0”