与 System.Web.Mvc 的版本冲突
Version conflict with System.Web.Mvc
现在我读了这本书 "ASP.NET MVC 5, Freeman",我已经创建了 3 个项目:
- SportsStore.Domain - 对于逻辑
- SportsStore.UnitTests - 用于测试
- SportsStore.WebUI - 对于视图和控制器
使用 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 版本。为此;
- 单击工具然后 select "NuGet Package Manager"
- Select "Manage NuGet Package Manager Console"
- 搜索
Microsoft Asp.NET MVC
并更新它。
- 重启Visual Studio
我在同一个项目中遇到了这个问题,解决它很容易,只需单击 Build►Clean Solution,这将清除 bin 文件夹中的一些文件,然后重建您的解决方案。这实际上解决了我的问题。
通常当您升级/安装/卸载 MVC 包时,它依赖于任何其他库,例如我遇到的问题是它依赖于与 MVC 版本 5.2.7 不兼容的 MvcSiteMapProvider。
这是针对此类问题的解决方案
- 卸载依赖库(例如我卸载
MvcSiteMapProvide)
升级MVC版本或者使用NuGet包
管理器或控制台。再次安装卸载库(在我的情况下我
再次安装 MvcSiteMapProvider)
删除 Obj 文件夹,清理并构建项目。
转到 Prerences 找到 System.Web.Mvc 然后删除它
现在我读了这本书 "ASP.NET MVC 5, Freeman",我已经创建了 3 个项目:
- SportsStore.Domain - 对于逻辑
- SportsStore.UnitTests - 用于测试
- SportsStore.WebUI - 对于视图和控制器
使用 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 版本。为此;
- 单击工具然后 select "NuGet Package Manager"
- Select "Manage NuGet Package Manager Console"
- 搜索
Microsoft Asp.NET MVC
并更新它。 - 重启Visual Studio
我在同一个项目中遇到了这个问题,解决它很容易,只需单击 Build►Clean Solution,这将清除 bin 文件夹中的一些文件,然后重建您的解决方案。这实际上解决了我的问题。
通常当您升级/安装/卸载 MVC 包时,它依赖于任何其他库,例如我遇到的问题是它依赖于与 MVC 版本 5.2.7 不兼容的 MvcSiteMapProvider。
这是针对此类问题的解决方案
- 卸载依赖库(例如我卸载 MvcSiteMapProvide)
升级MVC版本或者使用NuGet包
管理器或控制台。再次安装卸载库(在我的情况下我 再次安装 MvcSiteMapProvider)
删除 Obj 文件夹,清理并构建项目。
转到 Prerences 找到 System.Web.Mvc 然后删除它