128

刚刚升级了一个 ASP.NET MVC4 项目以使用 Unity.WebApi 版本 5.0.0.0 并且它需要 System.Web.Http v 5.0.0.0 根据以下错误:

Assembly 'Unity.WebApi, Version=5.1.0.0, Culture=neutral, PublicKeyToken=43da31bc42a85347' 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'   

我目前正在引用 System.Web.Http v4.0,但已将以下 NuGet 包升级到各自的最新版本:

  • ANTLRv3

  • Microsoft ASP.NET 通用提供程序

  • Microsoft.Web.Infrastructure

  • 微软 ASP.NET MVC

  • 微软 ASP.NET 剃须刀

  • Microsoft ASP.NET 通用提供程序核心库

  • Microsoft ASP.NET 通用提供程序

  • Microsoft ASP.NET Web API 2 客户端

  • Microsoft ASP.NET Web API 2 核心

  • Microsoft ASP.NET Web API 2 Web 主机

  • 微软 ASP.NET Web API 2

  • 微软 ASP.NET 网页

  • Microsoft.Web.Infrastructure

  • 网络润滑脂

    通过 NuGet。我没有列出相关的 JavaScript 库,例如 Micrososft.jQuery.Unobtrusive Validation 等。

升级 System.Web.Http 的 NuGet 包是什么,还是我必须手动执行此操作?

4

2 回答 2

211

您需要Microsoft.AspNet.WebApi.Core包。

您可以在 .csproj 文件中看到它:

<Reference Include="System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45\System.Web.Http.dll</HintPath>
</Reference>
于 2013-11-25T20:56:28.883 回答
10

我在一个解决方案中有几个项目。对于一些项目,我之前手动添加了引用。当我使用 NuGet 更新 WebAPI 包时,这些引用没有自动更新。

我发现我可以手动更新这些引用,使它们指向我的解决方案的 Packages 文件夹中的 v5 DLL,或者执行以下操作。

  1. 转到“管理 NuGet 包”
  2. 选择已安装的包“Microsoft ASP.NET Web API 2.1”
  3. 单击管理并检查我之前手动添加的项目。
于 2014-02-01T23:41:23.237 回答