如何在升级到ASP.NET MVC 5和Web API 2后解决NuGet DLL hell问题

8

我已经按照这个网站中的步骤,将ASP.NET MVC4升级到了ASP.NET MVC 5.1。

在升级nuget包时遇到了困难,出现了许多错误和回滚:

例如:

Install failed. Rolling back...
Install-Package : Updating 'Microsoft.AspNet.WebApi.Core 4.0.20710.0' to 
'Microsoft.AspNet.WebApi.Core 5.1.0' failed. Unable to find a version of 
'Microsoft.AspNet.WebApi.OData' that is compatible with 'Microsoft.AspNet.
WebApi.Core 5.1.0'.

或者

Update-Package : Updating 'Microsoft.Net.Http 2.0.20710.0' 
to 'Microsoft.Net.Http 2.2.18' failed. Unable to find versions of 
'Microsoft.AspNet.WebApi.Client, Microsoft.AspNet.WebApi.OData' that 
are compatible with 'Microsoft.Net.Http 2.2.18'.

有没有一些简单的步骤来清理和更新所有内容,摆脱这个 DLL 地狱?


我曾经也在那里。唯一让我从你所说的地狱中走出来的方式是痛苦的。恐怕你已经知道了这是什么。 - stink
2个回答

8

删除项目中所有nuget包的快速方法是手动编辑packages.config文件,然后删除所有dll引用(仅适用于nuget包中的dll)。

这比通过nuget包管理器逐个卸载要快得多,尤其是在存在如此大的依赖关系树时。


详细说明Tom的答案 - 让MVC和WebAPI升级成功的唯一方法是找到我的packages.config文件中的这些行:<package id="AspNetWebApi" version="4.0.20710.0" targetFramework="net45" /> <package id="Microsoft.AspNet.Mvc" version="4.0.30506.0" targetFramework="net45" />并将它们替换为 <package id="Microsoft.AspNet.Mvc" version="5.1.1" targetFramework="net45" /> <package id="Microsoft.AspNet.WebApi" version="4.0.30506.0" targetFramework="net45" />之后,我只需要添加一些绑定重定向就可以了。 - kiprainey

2

最终,我成功解决了问题,即使通过nuget命令“Update-Package”升级失败。

  1. 我通过nuget卸载了每个项目中所有有问题的包及其依赖项。
  2. 我为解决方案中的所有项目设置了相同的.NET Framework 4.5.1(可能不是必要的)。
  3. 我逐一通过nuget安装这些包。
  4. 我使用FindConflictingReferences工具https://gist.github.com/brianlow/1553265比较项目之间的引用,并修复可能的冲突。

花了我很长时间才解决了这个问题...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接