错误:在VS2012中将MVC4升级到MVC5

时间:2013-10-21 19:46:01

标签: asp.net-mvc-4 asp.net-mvc-5

将项目从MVC4升级到MVC5后,我遇到了以下错误。我跟着How to Upgrade an ASP.NET MVC 4 and Web API Project to ASP.NET MVC 5 and Web API 2

Assembly 'WebServices.WebApi.External, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 如何解决这个问题?

6 个答案:

答案 0 :(得分:4)

我有类似的问题,这是由于我使用

_bin_deployableAssemblies

此文件夹中的System.Web.Http版本为4.我删除了此文件夹并且有效

答案 1 :(得分:4)

我也开始关注那篇文章而没有取得圆满成功,但是

要修复此“简单”,请创建新的web mvc项目并保存 然后在记事本中打开来自views,packages.config和.csproj的web.config,web.config

然后打开您的项目并查看文件版本号的条目差异 例如在包中你应该看到

<package id="Microsoft.AspNet.Mvc" version="5.0.0" targetFramework="net45" />

但你可以

<package id="Microsoft.AspNet.Mvc" version="4.x.x.x" targetFramework="net40" />
web.config中的

<dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>

但你可以

<dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>

在.csproj

<Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <Private>True</Private>
      <HintPath>..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.Helpers.dll</HintPath>
    </Reference>

但你可以

<Reference Include="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <Private>True</Private>
      <HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.Helpers.dll</HintPath>
    </Reference>

用更新的值替换所有值

之后执行Ctrl + Shift + B. 并在nuget控制台中通过命令Update-Package

更新所有软件包

对我来说,这项工作最终

答案 2 :(得分:1)

您应该检查Web Services.Web Api.External项目的所有引用。其中一个可能仍然使用System.Web.Http版本4.或者,尝试在web.config

中显式绑定它
 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>      
    </assemblyBinding>
  </runtime>

答案 3 :(得分:1)

我通过安装System.Web.Http.WebHost解决了这个问题。您可以使用nuget进行安装并搜索WebHost。这是确切的链接https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0

您也可以从Package Manager控制台安装它: PM&GT;安装包Microsoft.AspNet.WebApi.WebHost

答案 4 :(得分:0)

有同样的问题。通过使用Nuget卸载旧的AttributeRouting包解决了这个问题。当然,不再需要它了。

这也是一个单元测试项目。

答案 5 :(得分:0)

就我而言,我刚从 Web.config 文件中删除了麻烦的绑定,解决了这个问题。

备份 web.config ,然后只需删除包含名称为dependentAssembly的{​​{1}}元素的assemblyIdentity元素。

System.Web.Http

它立即对我有用。