Could not load file or assembly 'System.Web.Mvc' . How to use the correct reference?

落爺英雄遲暮 提交于 2019-12-03 10:01:27

Error was caused due to incorrect binding. I changed:

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
  </dependentAssembly>

to

  <dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.0.0.0" />

and it works now.

Well, it's the version binding concern, and for the users getting into this now as in 2019, with say, VS 2017, (as I ran into) and as the OP mentioned :

How do I upgrade the version of System.Web.Mvc to point to the correct assembly?

Always let nuget package manager do it for you, to make the correct versions installed according to your project .NET version etc.

Since, I reached here searching for my issue :

Could not load file or assembly 'System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

and got the indication of version binding concern, I did the following:

and it worked quite smoothly thereafter.

@Ahmed, Thanks for pointing to the right direction, though

In my case i solved by changing the PageControls and assemblyBinding elements on config to match the current version of `System.Web.Mvc, wich is 5.2.4.0

PageControls

At the PageControls section replace the version in all occurrences of assembly "System.Web.Mvc", for your current version.:

 <pages controlRenderingCompatibilityVersion="4.0" validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <controls>
    <add assembly="System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc"/>
  </controls>

assemblyBinding

At the assemblyBindingelement map all previous versions of the assembly to the current version, like this:

 <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="0.0.0.0-5.2.4.0" newVersion="5.2.4.0"/>
  </dependentAssembly>

This element it is used by any package the references an old version.

How to check the current version of 'System.Web.Mvc'

You current version of System.Web.Mvc can be seen in properties tab, selecting the assembly from the project references, like this:

Note: I am answering an 2 years old question, so reasons for this error occur now may be different

In my case the application was working fine locally but not on one of the servers. Removing the section for 'System.Web.Mvc' fixed the issue for me.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!