如何查找用于升级到System.Web.Http v5.0.0.0的NuGet包?

130

刚刚将一个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

  • Microsoft ASP.NET MVC

  • Microsoft ASP.NET Razor

  • 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主机

  • Microsoft ASP.NET Web API 2

  • Microsoft ASP.NET Web Page

  • Microsoft.Web.Infrastructure

  • WebGrease

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

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


如果您在NuGet包管理器中选择“包括预发行版”而不是“稳定版”,那么您将看到System.Web.Http。这是您要找的吗? - William
在选择“包括预发行版”后,我应该搜索System.Web.Http吗?还是我应该去哪里找? - Klaus Nji
请忽略我之前的评论!那个包已经过时了。你应该尝试遵循Stjin在下面的建议。奇怪的是,当我在我的MVC 4项目中安装Unity.WebApi时,它会自动更新System.Web.Http引用到v5.0,所以我不确定为什么对你不起作用。如果其他方法都失败了,你可以尝试卸载Unity包并重新安装它。 - William
2个回答

215
你需要安装 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>

我已经将 Microsoft ASP.NET Web API 2 Core (id= Microsoft.AspNet.WebApi.Core) 升级到上面列出的 v5.0.0.0 版本。看起来我需要将它们删除并重新添加? - Klaus Nji
7
还需清理、删除 bin_deployableAssemblies 并重新构建。 - Klaus Nji
几乎有完全相同的项目。每个人都在谈论的bin_deployable Assemblies文件夹在哪里? - nzondlo
@nzondlo 我相信这个文件夹是在发布应用程序时生成的。不过我也不完全确定。 - user247702
1
@nzondlo bin_deployableAssemblies 只是一个普通的文件夹,但当它存在于您项目的目录中时,它会得到特殊处理。该文件夹中的任何 .dll 文件在发布 Web 应用程序时都会被复制到 bin 目录中。在 NuGet 成为主流之前,它被用于部署 System.Web.Mvc dll(和其他 dll)与您的 Web 应用程序。 - Steven Liekens

10

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

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

  1. 进入“管理 NuGet Packages”
  2. 选择已安装包“Microsoft ASP.NET Web API 2.1”
  3. 点击“管理”,并勾选我之前手动添加的项目。

卸载该软件包,然后立即重新安装它可以解决我的问题。这种情况发生在我将项目带到另一台开发机器上时。自动软件包还原出现了某些错误版本。 - Matt J.
1
主要问题是更新Web.Api到主项目,但引用的项目仍在使用旧版本。应该通过右键单击解决方案名称和管理Nuget Packages菜单一起更新,正如@Tony所提到的那样。干杯! - Orhaan
安装程序包 Microsoft.AspNet.WebApi.Core - C Sharper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接