我正在将我的IDE从VisualStudio for Web(v10)升级到Visual Studio 2015(v14,我猜)社区版.
我试图在新IDE上使用的主要项目是MVC 5(5.2.3),EF 6.1(6.1.3)和其他一些东西.
问题是:在新IDE上打开项目时,一切看起来都很好(甚至编译和工作).我在项目资源管理器上运行了MVC上下文菜单(在适当的时候显示“添加控制器…”和“添加视图…”). Razor Intellisense只是(真的很烦人).
当我打开一个View文件(.cshtml)时,我会收到几个帮助器的警告,一些“使用”是灰色的(即使它们应该是需要的),@ model myModel显示为@之后的所有内容.模型指令不是剃刀(它通过intellisense着色处理为HTML).
我已经找到并尝试过的内容:
>
>我已经尝试从vs(devenv / ResetUserData)清除UserData
>
>我已经尝试在安全模式下运行VS2015
>
>我已经尝试以管理员身份运行VS2015
>
>我已经尝试将Project的目标框架设置为4.5.1(曾经是4.5)
>
>我已经尝试在Visual Studio Community 2013上打开该项目,然后在尝试在VS2015上使用它之前保存它.
从VS2015创建另一个MVC项目时,一切正常.
这是一个恼人问题的例子:
解决方法
发布我发现相信它可以帮助其他人:
>似乎导致提到问题的是该项目是在旧的MVC版本(使用较旧的Razor,EF等)上创建的.
>如本答案所述:Visual Studio 2015 Razor View MVC Types not recognized,VS2015工具可能不适用于较旧的MVC.
>解决方案是将所有包更新为[至少]在较新的MVC(5?)上接受的次要版本.为此,您可以使用本网站中的列表:http://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2.
>一旦所有内容都是最新的,请打开位于应用程序根目录和Views文件夹中的web.config文件.在那里,你可能会发现一些旧版本的MVC和Razor的引用.更新这些版本的值(所有这些值)以匹配软件包的更新版本(您可以在新的Visual Studio上创建一个新的空MVC项目,并检查这些值作为它们应该是什么的提示).
This step is the catch! Since,even if you update you project’s packages,some web.config references may still mention the original versions.
>清理解决方案(Build> Clean Solution)并关闭项目.重新打开并编译它.现在[希望]一切都应该正常.
[编辑]
>还有一件事:如果您的项目在IDE转换期间也从Framework 4.5更新到4.5.1,您还应该安装名为“Microsoft.CodeDom.Providers.DotNetCompilerPlatform”的NuGet包(如https://support.microsoft.com/en-us/kb/3025133中所述).