Asp.net mvc 4 无法使用ASP.Net(MVC 4)Web API OData预发布加载文件或程序集System.Net.Http,版本=4.0.0.0 问题
安装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的引用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 我需要这个 (当我使
- 具有版本5.0.0.0
- 指向包的\lib\net45\文件夹
- 是否有CopyLocal=true
我通过使用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