版本与System.Web.Mvc冲突

本文关键字:Mvc 冲突 Web System 版本 | 更新日期: 2023-09-27 18:36:57

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

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

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

Instal-Package Microsoft.Aspnet.Mvc -version 5.0.0.0 -projectname SportsStore.Domain..等。。

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

构建"SportsStore.WebUI, version=1.0.0.0, Culture=Neutral, PublicKeyToken=null" 使用 "System.Web.Mvc, Version=5.2.2.0, 文化=中性,公钥令牌=31bf3856ad364e35"的更高版本 比程序集"System.Web.Mvc,版本=5.0.0.0,区域性=中性, PublicKeyToken=31bf3856ad364e35",引用为 made c:''Users''Дима''Documents''Visual Studio 2013''Projects''SportsStore''SportsStore.WebUI''bin''SportsStore.WebUI.dll SportsStore.UnitTests

看不懂,怎么解决

版本与System.Web.Mvc冲突

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

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

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

您必须更新Microsoft Asp.NET MVC版本。要做到这一点;

  1. 单击"工具",然后选择"NuGet 包管理器"
  2. 选择"管理 NuGet 包管理器控制台"
  3. 搜索Microsoft Asp.NET MVC并更新它。
  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>

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

这是这些类型问题的解决方案

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

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

删除 Obj 文件夹,清理并生成项目。

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

转到Prerences找到System.Web.Mvc,然后将其删除