如何获得'System.Web.Http,版本 = 5.2.3.0?
Posted
技术标签:
【中文标题】如何获得\'System.Web.Http,版本 = 5.2.3.0?【英文标题】:How to get 'System.Web.Http, Version=5.2.3.0?如何获得'System.Web.Http,版本 = 5.2.3.0? 【发布时间】:2015-04-20 16:14:25 【问题描述】:我刚刚创建了一个 MVC5 项目并从 nuget 添加了几个包,但是当我编译该项目时,我得到了这个错误。似乎其中一个包确实依赖于 system.web.http 版本 5.2.3.0,我在任何地方都找不到。我只是想知道如何获取最新版本的 system.web.http ?
错误 2 程序集 'System.Web.Http.WebHost, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 使用 'System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'比引用的程序集 'System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' d:\Backup 2014-12-25\Website-Projects\www.ptsol.com 更高的版本。 au\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll【问题讨论】:
【参考方案1】:在包管理器控制台中
Install-Package Microsoft.AspNet.WebApi.Core -version 5.2.3
【讨论】:
我做了,但仍然给我同样的错误PM> install-package microsoft.aspnet.webapi.core -version 5.2.3 Attempting to resolve dependency 'Microsoft.AspNet. WebApi.Client (≥ 5.2.3)'。正在尝试解决依赖项“Newtonsoft.Json (≥ 6.0.4)”。 'Microsoft.AspNet.WebApi.Core 5.2.3' 已安装。 www.ptsol.com.au 已经引用了“Microsoft.AspNet.WebApi.Core 5.2.3”。@JohnHadikusumo 为您的所有项目执行此操作。您似乎有一个旧版本的依赖项目。 是的,这会起作用。在运行此命令之前和之后仔细阅读您的 Web.config 和 packages.config,您会看到发生了什么变化。 解决了我的问题。 我不得不改用
Install-Package Microsoft.AspNet.WebApi.Client -Version 5.2.7
(.Client 而不是.Core)。我已经有了 .Core 5.2.7,但我仍然收到错误消息。 nuget.org/packages/Microsoft.AspNet.WebApi.Client【参考方案2】:
我做了Install-Package Microsoft.AspNet.WebApi.Core -version 5.2.3
,但它仍然没有用。然后查看我的项目 bin 文件夹,发现它仍然有旧的 System.Web.Mvc 文件。
所以我手动将更新的文件从包中复制到 bin 文件夹中。然后我又开始运行了。
【讨论】:
【参考方案3】:修复它的一种方法是修改 web.config 文件中的程序集重定向。
修改如下:
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
到
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="4.0.0.0" />
</dependentAssembly>
所以 oldVersion 属性应该从“...-4.0.0.0”更改为“...-5.2.3.0”。
【讨论】:
这对我有用。我们将bindingRedirect
设置为<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
,但将其更改为使用4.0.0.0
。对我来说仍然没有意义,因为应该使用 NuGet 包 DLL 而不是 GAC 版本,但是嘿,它工作......所以谢谢!【参考方案4】:
安装包 Microsoft.AspNet.WebApi.Core -version 5.2.3
然后在项目中添加引用->浏览。按下浏览按钮并转到 C:\Users\UserName\Documents\Visual Studio 2015\Projects\ProjectName\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45 并添加需要的.dll文件
【讨论】:
【参考方案5】:卸载并重新安装 NuGet 包对我有用。
-
从项目中删除所有旧引用。
在包管理器控制台中执行:
UnInstall-Package Microsoft.AspNet.WebApi.Core -version 5.2.3
Install-Package Microsoft.AspNet.WebApi.Core -version 5.2.3
【讨论】:
就这个解决了我的问题。我做了这么多,胜利行动是如此简单。【参考方案6】:您安装的软件包向 5.2.3.0 版 dll 引入了依赖项,正如上面的用户 Bracher 所示。 Microsoft.AspNet.WebApi.Cors 是一个示例包。我采取的路径是更新 MVC 项目 proir 到任何包安装:
Install-Package Microsoft.AspNet.Mvc -Version 5.2.3
https://www.nuget.org/packages/microsoft.aspnet.mvc
【讨论】:
【参考方案7】:在你的 nuget 包管理器中安装它
Install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.7
粘贴
使用 System.Web.Http;
这应该可以工作
【讨论】:
以上是关于如何获得'System.Web.Http,版本 = 5.2.3.0?的主要内容,如果未能解决你的问题,请参考以下文章
如何解决错误“尝试通过安全透明方法'System.Web.Http.GlobalConfiguration.get_Configuration()
如何绕过 System.Web.Http.AuthorizeAttribute.IsAuthorized
如何在 .Net Web API 中包含 System.Web.Http.Cors 参考 dll
使用 System.Web.Http.ApiController + Postman 进行身份验证 - 没有遇到断点/不确定这是如何工作的
未能加载文件或程序集“System.Web.Http.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e3
System.Web.Mvc.HttpPostAttribute vs System.Web.Http.HttpPostAttribute? [duplicate]