与 System.Web.Mvc 的版本冲突

Version conflict with System.Web.Mvc

现在我读了这本书 "ASP.NET MVC 5, Freeman",我已经创建了 3 个项目:

使用 NuGet 命令行我安装了很多包,如书中所述:

安装包Microsoft.Aspnet.Mvc -version 5.0.0.0 -projectname SportsStore.Domain ..等等..

但是我认为我安装错了,因为现在我有错误:

Build "SportsStore.WebUI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" use "System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" of the later version than the assembly "System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", to which reference is made c:\Users\Дима\Documents\Visual Studio 2013\Projects\SportsStore\SportsStore.WebUI\bin\SportsStore.WebUI.dll SportsStore.UnitTests

看不懂,如何解决

构建中的错误消息清楚地解释了问题,如果您知道如何阅读的话。

首先告诉你WebUI项目使用的是5.2.2.0:

SportsStore.WebUI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null use System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

然后它告诉您您的一个项目引用了不同的版本:

later version than the assembly System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

由于您在问题中指出您在域项目中安装了 5.0.0.0,因此您需要从项目中删除该版本,并安装正确的版本(在本例中为 5.2.2.0)

您也可以尝试将web.config中的相应部分替换为该部分。不确定它是否有效,但只需 2 分钟即可尝试。

<dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.2.2.0" />
      </dependentAssembly>

我自己 运行 遇到了这个完全相同的问题,并决定将 Microsoft.Aspnet.Mvc 的版本更新为 WebUI 项目中定义的相同版本。它对我有用,我想我会分享。

所以在包管理器控制台中,我 运行:

Update-Package Microsoft.Aspnet.Mvc -version 5.2.3 -projectname SportsStore.Domain
Update-Package Microsoft.Aspnet.Mvc -version 5.2.3 -projectname SportsStore.UnitTests

注意:我在撰写本文时的版本是 5.2.3。你上面说你的是 5.2.2,所以用那个代替。

您必须更新您的 Microsoft Asp.NET MVC 版本。为此;

  1. 单击工具然后 select "NuGet Package Manager"
  2. Select "Manage NuGet Package Manager Console"
  3. 搜索 Microsoft Asp.NET MVC 并更新它。
  4. 重启Visual Studio

我在同一个项目中遇到了这个问题,解决它很容易,只需单击 Build►Clean Solution,这将清除 bin 文件夹中的一些文件,然后重建您的解决方案。这实际上解决了我的问题。

通常当您升级/安装/卸载 MVC 包时,它依赖于任何其他库,例如我遇到的问题是它依赖于与 MVC 版本 5.2.7 不兼容的 MvcSiteMapProvider。

这是针对此类问题的解决方案

  1. 卸载依赖库(例如我卸载 MvcSiteMapProvide)
  2. 升级MVC版本或者使用NuGet包

  3. 管理器或控制台。再次安装卸载库(在我的情况下我 再次安装 MvcSiteMapProvider)

删除 Obj 文件夹,清理并构建项目。

转到 Prerences 找到 System.Web.Mvc 然后删除它