【问题标题】:Version conflict with System.Web.Mvc与 System.Web.Mvc 的版本冲突
【发布时间】:2015-01-08 14:31:57
【问题描述】:

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

  • SportsStore.Domain - 用于逻辑
  • SportsStore.UnitTests - 用于测试
  • SportsStore.WebUI - 用于视图和控制器

使用 NuGet 命令行我已经安装了很多包,就像书中的一样:

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

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

构建“SportsStore.WebUI,版本=1.0.0.0,文化=中性, PublicKeyToken=null”使用“System.Web.Mvc,版本=5.2.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 后期版本 比程序集“System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35",参考是 制作 c:\Users\Дима\Documents\Visual Studio 2013\Projects\SportsStore\SportsStore.WebUI\bin\SportsStore.WebUI.dll SportsStore.UnitTests

看不懂,怎么解决

【问题讨论】:

  • 从Domain包中卸载MVC包,这次安装它的版本标签是5.2.2.0 (-version 5.2.2.0)
  • 我添加了一个答案 - 如果它解决了您的问题,如果您将其标记为正确,我将不胜感激
  • 本书的同一个实验室有同样的问题。通过卸载 Microsoft.Aspnet.Mvc for UnitTests 项目并使用 5.2.2.0 版本密钥重新安装解决

标签: c# asp.net-mvc


【解决方案1】:

我自己也遇到了同样的问题,并决定将 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,所以改用它。

【讨论】:

  • 就我而言,不同的项目指的是不同的版本。我必须更新所有项目以使用相同的版本。谢谢。
【解决方案2】:

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

首先告诉你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)

【讨论】:

  • 在我的例子中,这是因为我在我的主项目中使用 Nuget 下载了 MVC5,但是 Tests 项目是使用默认的 MVC4 搭建的。我只是在 Trsts 项目中添加了对核心项目中 MVC5 DLL 的引用。
【解决方案3】:

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

  1. 单击工具并选择“NuGet 包管理器”
  2. 选择“管理 NuGet 包管理器控制台”
  3. 搜索 Microsoft Asp.NET MVC 并更新它。
  4. 重启 Visual Studio

【讨论】:

    【解决方案4】:

    您也可以尝试用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>
    

    【讨论】:

      【解决方案5】:

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

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

      1. 卸载依赖库(例如在我的情况下,我卸载 MvcSiteMapProvide)
      2. 使用 NuGet 包升级 MVC 版本

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

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-01-24
            • 2020-03-27
            • 1970-01-01
            • 2016-10-17
            • 2019-12-09
            • 2019-08-07
            • 2021-07-25
            相关资源
            最近更新 更多