无论我如何尝试,System.Web.Http引用默认为4.0版本

时间:2014-02-13 20:11:41

标签: c# visual-studio dll breeze nuget-package

我在我的项目中使用BreezeApi NuGet包。它位于Visual Studio 2013中。

我收到此错误。

  

错误41程序集'Breeze.WebApi2,Version = 1.4.0.0,Culture = neutral,PublicKeyToken = f6085f1a45e2ac59'使用'System.Web.Http,Version = 5.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'高于引用程序集的版本'System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'

我不知道为什么我的项目会引用4.0版本。我试过的事情:

  1. 我从我的项目中删除了system.web.http 4.0的引用,并浏览到了5.0 DLL文件位置。一旦我添加它并返回到解决方案资源管理器,右键单击system.web.http dll,它显示4.0.0.0。

  2. 我在web.config中添加了程序集绑定,如下所示

    <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
    </dependentAssembly>
    
  3. 如何解决此问题?

3 个答案:

答案 0 :(得分:14)

这就是我为解决与你的问题非常相似的问题所做的:

  

错误2汇编'Breeze.WebApi2,Version = 1.4.0.0,Culture = neutral,   PublicKeyToken = f6085f1a45e2ac59'使用'System.Web.Http,   Version = 5.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'   它的版本高于引用的程序集'System.Web.Http,   版本= 5.0.0.0,文化=中立,   PublicKeyToken = 31bf3856ad364e35'c:\ Repos \ SPACodeCamper \ packages \ Breeze.Server.WebApi2.1.4.12 \ lib \ Breeze.WebApi2.dll CC.Web

John Papa在完成课程Building Apps with Angular and Breeze - Part 1时遇到了这个错误。在将Breeze Web API控制器添加到CC.Web后,它发生在步骤3.15。

要解决此问题,我们需要更新以下NuGet包。我在Visual Studio 2013中使用了NuGet包管理器:

  1. Microsoft.AspNet.WebApi.Client 5.0.0至5.1.2
  2. Microsoft.AspNet.WebApi.Core 5.0.0至5.1.2
  3. Microsoft.AspNet.WebApi.WebHost 5.0.0至5.1.2
  4. Microsoft.AspNet.WebApi.OData 5.0.0到5.1.2(这个我不得不重启Visual Studio来完成安装)
  5. 更新上面的NuGet包会将System.Web.Http的版本设置为正确的版本,在本例中为5.1.0.0

答案 1 :(得分:1)

我认为您的回答是here

您必须更新NuGet包。最简单的是NuGet数据包管理器控制台中的update-package。

请注意可能会破坏的其他依赖项。

答案 2 :(得分:0)

我通过更新NuGet的所有包来解决这个问题。