我在NuGet中有以下过时的包:
但是,当我点击“更新”按钮时,出现以下错误:
错误:将“Microsoft.AspNet.Mvc 4.0.20710.0”更新为“Microsoft.AspNet.Mvc 5.1.2”失败。
无法找到与之兼容的'AspNetMvc'版本 'Microsoft.AspNet.Mvc 5.1.2'。
在使用此软件包的两个项目中都会发生这种情况:
我在两个项目上运行.NET 4.5框架。有什么我可以做的升级这个包,或者它只是与4.5不兼容,或者我现在应该使用不同的NuGet包吗?
答案 0 :(得分:11)
首先将项目框架更改为4.5.1
打开nuget包管理器控制台和
这适合我。
答案 1 :(得分:3)
MVC 5.1构建于.NET 4.5.1之上。这是你的第一个问题。您需要在项目上下文菜单>下将目标框架更改为“.NET Framework 4.5.1”。属性。
如果这不起作用,您可能需要卸载MVC包并重新安装。
我的经验是,从主要版本升级可能会很痛苦,而您对细节的关注 - 尤其是在对web.config进行更改时 - 是至关重要的。您可以在此处查看从4到5的指南,并根据5.1:http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2
进行相应调整根据项目的复杂程度,使用4.5.1 Visual Studio MVC模板将现有代码文件转移到新创建的项目中会更容易。
答案 2 :(得分:2)
据我所知,升级到4.5.1并没有真正解决问题。事实上,我能够在将目标框架保留为4.5的情况下修复它。
这是我执行的黑魔法似乎可以修复它。首先,卸载3个旧的MVC库(如建议in this comment),重新安装新的,重建。至少对于这部分我可以在NuGet管理包UI中进行,其中更新在同一位置失败。此时NuGet很高兴,您可以编译,但您的应用程序实际上无法正常工作。
接下来,请务必遵循Upgrade ASP.NET 4 document referenced in the other comment中的绝对每个步骤。当我偶然遗漏一步时,我会得到奇怪的,非直观的错误(回想起来很明显)。例如,您必须更新两个单独的Web.config文件,root和Views目录中的一个。您必须在该版本中找到旧版本号并手动更改,其中有时会自动为您修复根Web.config。否则,我会看到类似于System.Web.WebPages.Razor.WebPageRazorHost"类型的违反继承安全规则的可怕错误。等等。我应该将每个错误消息都复制下来以供后人使用,但重点是,对于每个错误,我都会返回到升级指南,检查步骤,意识到我错过了一个,修复然后再出现新的错误,直到他们都走了。
有好消息。至少在我的情况下,尽管所有可怕的警告你必须找到不兼容性,应用程序的其余部分仍然像以前一样工作而没有任何改变。