Asp.net mvc 4 无法使用ASP.Net(MVC 4)Web API OData预发布加载文件或程序集System.Net.Http,版本=4.0.0.0 问题

Asp.net mvc 4 无法使用ASP.Net(MVC 4)Web API OData预发布加载文件或程序集System.Net.Http,版本=4.0.0.0 问题,asp.net-mvc-4,asp.net-web-api,odata,assembly-resolution,Asp.net Mvc 4,Asp.net Web Api,Odata,Assembly Resolution,安装Microsoft ASP.NET Web API OData包5.0.0-rc1预发行版后,我遇到以下异常: 无法加载文件或程序集'System.Web.Http,版本=4.0.0.0, 区域性=中性,PublicKeyToken=31bf3856ad364e35'或其 依赖关系。定位程序集的清单定义不正确 匹配程序集引用。(来自HRESULT的异常:0x8013100) 我的MVC4项目是全新的,非常小,没有什么特别之处。我的目标是.NETFramework 4.5 我需要这个 (当我使

安装Microsoft ASP.NET Web API OData包5.0.0-rc1预发行版后,我遇到以下异常:

无法加载文件或程序集'System.Web.Http,版本=4.0.0.0, 区域性=中性,PublicKeyToken=31bf3856ad364e35'或其 依赖关系。定位程序集的清单定义不正确 匹配程序集引用。(来自HRESULT的异常:0x8013100)

我的MVC4项目是全新的,非常小,没有什么特别之处。我的目标是.NETFramework 4.5

我需要这个 (当我使用包的版本4.0.0.0时,Delta类不起作用)

我怎样才能解决这个问题

System.Web.Http的我的版本 在GAC中,我有System.Web.Http的版本5.0.0.0

gacutil-l System.Web.Http全局程序集缓存包含 以下程序集:System.Web.Http,版本=5.0.0.0, 文化=中性,PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL

在Visual Studio中,当我浏览程序集时,System.Web.Http的给定版本是4.0.0.0(为什么?)

我的项目中,对System.Web.Http的引用

  • 具有版本5.0.0.0
  • 指向包的\lib\net45\文件夹
  • 是否有CopyLocal=true
我试过的东西 我试图在Web.config中将重定向V4.0.0.0绑定到5.0.0.0



我通过使用nuget将WebApi包升级到预发布版本使其正常工作:

PM> Microsoft.AspNet.WebApi -Pre
为了强制项目使用最新版本的WebApi,需要对根Web.config进行一些修改:

1) 网页版本从2.0.0.0到3.0.0.0


从引用中删除System.Web.Http和System.Net.Http.Formatting,并通过浏览到您的bin文件夹(nuget将它们复制到该文件夹)将引用添加回现在,文件版本显示5.0.0.0

我在尝试从项目模板更新Hot Tower项目时,以及在2013年10月23日的VS 2012中创建一个空项目并通过nuget安装HotTower时,遇到了这个问题

为了解决这个问题,我通过Nuget将Web Api Web主机和Web Api包更新为5.0,这是Nuget当前的版本(2013年10月23日)

然后,我添加了绑定指示:


Visual Studio 2013有一个新功能来处理此问题。构建应用程序时,您应该会看到有关引用的程序集的不同版本的警告。双击警告以将程序集绑定重定向添加到web.config

有关更多详细信息,请参阅


jeff.eynon在下面指出,您需要签出web.config(如果使用TFS源代码管理),以使VS自动编辑文件。谢谢你的提示

或者您可以从NuGet Package Manager控制台执行此操作

 Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

然后您将能够添加对System.Web.Http.WebHost 5.0的引用

此错误在几个不同的项目中多次出现

我最终发现,当我构建时,bin文件夹中已经有system.web.mvc二进制程序集的副本

要解决此问题,请在引用列表中的程序集上单击鼠标右键,然后选择“属性”。通过查看“version”属性,检查这是否是最新版本。如果是,请将“复制本地”切换为true

这将确保项目中引用的版本是最终将出现在binaries文件夹中的版本

如果仍然出现错误,请尝试运行nuGet以获取最新版本,然后重试上述操作


祝你好运-这是一个痛苦的错误

我遇到了同样的问题,我通过将以下LIB的CopyLocal设置为true来解决它:

System.Web.Http.dll
System.Web.Http.WebHost.dll
System.Net.Http.Formatting.dll


我必须补充一点,我使用MVC4和NET4时遇到了同样的错误。当我为依赖注入安装Unity Framework时,Http和HttpFormatter的新引用已添加到我的配置中。下面是我遵循的步骤

我在nuGet Package Manager控制台上运行了以下命令: PM>安装软件包Microsoft.ASPNet.WebAPI-预安装


并在5.0版中添加了对dll的物理引用。我遇到了相同类型的问题,并按照以下步骤解决了问题

转到工具-->库包管理器-->包管理器控制台并运行以下命令


安装软件包Microsoft.ASPNet.WebAPI-pre

我通过nuget解决。第一次安装nuget。 您使用的第二个。
图示如下:

第三:查看“版本”属性,查看这是否是最新版本。


最后:再次检查project是否具有最新版本。

在如上所述修改
Web.config
文件中的引用后,我们解决了这些引用

我也面临着类似的问题

对于我们来说,我们有参考
Microsoft.Data.Edm.dll
OData.dll
以及程序文件中的其他程序集:

C:\Program Files (x86)\Microsoft WCF Data Services\5.0
                          \bin\.NETFramework\Microsoft.Data.Edm.dll

版本为5.6.4


一旦我将两个程序集的引用更改为
C:\..Project\packages\Microsoft.Data.Edm.5.6.0
,问题就解决了

进入nuget package manager并更新了我的程序包。现在它起作用了。我更新的主要版本是Microsoft.AspNet.WebApi.Core。可能需要对两个项目执行此操作以同步正确的引用。

如果出现此问题,请检查下面部分中的web.config

在web.config中选中此部分后,打开解决方案资源管理器并从项目树中选择引用,如图所示

展开引用后,查找导致错误的dll。右键单击dll引用并检查版本,如图abov所示
C:\Program Files (x86)\Microsoft WCF Data Services\5.0
                        \bin\.NETFramework\Microsoft.Data.OData.dll