2014-09-19 92 views
8

我正在浏览NuGet软件包列表,我正在更新bootstrap,jQuery等所有东西,但是当我这样做的时候,我毫不知情地更新了微软的。欧文和另一个包(可能是EF或别的东西),这是一个主要版本更新... woops。Razor语法在编译前给出错误(无智能感知)

我必须通过删除我的项目,从源代码管理中获取旧版本并将所有内容都恢复到正确的版本来跳过这些环节。一切都恢复正常,我还有最后一个问题。 剃刀语法。

当我打开我的任何意见......在任何地方的项目,我得到这个: enter image description here

注意到有什么用剃刀是如何用红色标记错误抽搐。他们每个人都说“名称”在当前上下文中不存在“

当我关闭文件时,没有显示错误。另外,当我运行这个项目时,没有任何问题,一切都很完美。问题是,我没有智能感,也没有认出我的任何剃刀助手。

这里是我的项目规格:

EntityFramework 6.0 
Microsoft.Owin 2.1.0.0 
Owin 1.0.0 
System.Web.Mvc 5.2.2.0 
System.Web.Razor 3.0.0.0 

在我的包文件夹我也有:

Microsoft.AspNet.Mvc.5.2.2 
Microsoft.AspNet.Razor.3.2.2 
Microsoft.WebPages.3.2.2 

我修改我的WebConfig修复多个错误,现在有以下代码是:

<compilation debug="true" targetFramework="4.5.1"> 
     <assemblies> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
    </compilation> 

以下:<runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

我有这些:

<dependentAssembly> 
     <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.AspNet.Identity.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="3.0.3.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" /> 
     </dependentAssembly> 

而且每个在我的项目中查看文件夹我有的Web.Config文件里下面的代码:

<configSections> 
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
     <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
    </sectionGroup> 
    </configSections> 

沿用此代码:

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Optimization"/> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="IcapOrg" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

我尝试卸载它,重新安装,升级,降级,删除和添加程序集,以及更多我已经开始忘记的事情。我不确定该从哪里继续前进。我可以继续编写代码,但如果没有智能感知,这只是一个真正的痛苦。预先感谢您的任何帮助。

+0

您是否使用ReSharper?我让R#给我Razor错误,直到我将Resharper.ExternalAnnotations包升级到版本8.2.2001.1。您可以通过ReSharper> Extension Manager ...菜单选项访问扩展。 – 2014-09-22 16:19:41

+0

我没有使用ReSharper。感谢问! – Termato 2014-09-22 16:23:00

回答

9

搜索后几天,我终于找到了这个网页:MVC Razor view Intellisense broken in VS 2013/2015/2017

在我意见>的Web.Config文件,我发现这个代码:

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.Optimization" /> 
     <add namespace="System.Web.Helpers"/> 
     <add namespace="IcapOrg" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

其中,你可以看到,有它的MVC版本错误。我以前只检查<sectionGroup>标签的RAZOR的正确版本,但我忽略了这一事实,MVC也需要适当的版本。将版本切换到:

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 

解决了我的问题。这提醒我总是仔细查看我的代码。

注意:正如你在问题中看到的那样,版本是5.0.0,而这个版本是4.0.0。我的不同视图文件夹中的不同Web.Config文件都写有不同的版本。非常奇怪。

+1

的确很奇怪。我们必须做相反的事情,并且使用5.0.0.0作为版本而不是5.2.0.0,因为我们实际上使用... – 2015-01-25 02:02:43

2

我花了好几天的时间来研究这个问题,现在正在等待我的头发长回来。但唉,持久。

的Visual Studio 2013更新4, targetFramework 4.5.1 System.Web.Mvc 5.2.2.0

确保web.config文件中(在根目录和目录视图(一个或多个))的利用适当的版本为mvc和剃刀如上所述。但是,如果剃须刀智能感知问题仍然存在,请先检查已安装的软件包。

最简单的方法是创建一个新的解决方案,并逐个安装/更新软件包以识别有问题的软件包。

在我的情况下更新解决方案的Webgrease/Modernizr/ANTLRv3包通过nuget到版本1.6.0/2.8.3/3.5.0.2导致所有问题和自我诱导的男性模式秃发。