C# Razor语法在编译前给出视图中的错误(无intellisense)

C# Razor语法在编译前给出视图中的错误(无intellisense),c#,entity-framework-6,razor-2,.net-4.5,asp.net-mvc-5.2,C#,Entity Framework 6,Razor 2,.net 4.5,Asp.net Mvc 5.2,我浏览了NuGet软件包列表,更新了bootstrap、jQuery等所有东西。但在我这么做的时候,我不假思索地更新了Microsoft.Owin和另一个软件包(可能是EF或其他软件包),这是一个主要版本更新…哇 我不得不通过删除我的项目,从源代码管理中获得一个旧版本,并将所有内容恢复到正确的版本来克服困难。一切都恢复正常了,我还有最后一个问题剃刀语法。 当我在项目的任何地方打开我的任何视图时,我得到以下信息: 请注意,使用Razor的任何东西都标记为红色的错误波形。它们都说,“当前上下文中不

我浏览了NuGet软件包列表,更新了bootstrap、jQuery等所有东西。但在我这么做的时候,我不假思索地更新了Microsoft.Owin和另一个软件包(可能是EF或其他软件包),这是一个主要版本更新…哇

我不得不通过删除我的项目,从源代码管理中获得一个旧版本,并将所有内容恢复到正确的版本来克服困难。一切都恢复正常了,我还有最后一个问题剃刀语法。

当我在项目的任何地方打开我的任何视图时,我得到以下信息:

请注意,使用Razor的任何东西都标记为红色的错误波形。它们都说,“当前上下文中不存在名称”

关闭文件时,不会显示任何错误。而且,当我运行项目时,没有问题,一切都很完美。问题是,我没有智能感知,它也不认识我的剃须刀助手

以下是我的项目的规范:

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>

在下面:

我有:

<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>
 <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>


我尝试过卸载、重新安装、升级、降级、删除和添加程序集,还有很多我开始忘记的事情。我真的不知道该从这里继续前进。我可以继续编码,但如果没有智能感知,那将是一个真正的痛苦。提前感谢您的帮助。

经过几天的搜索,我终于找到了这个页面:

在我的视图>Web.Config文件中,我发现了以下代码:

    <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>
 <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版本。我之前只检查了
标签以获得正确版本的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文件都有不同的版本。非常奇怪

我已经花了好几天的时间在这个问题上四处寻找,现在等着我的头发长回来。但是,唉,坚持

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

如上所述,确保web.config文件(根目录和视图目录中)使用mvc和razor的正确版本。但是,如果razor intellisense问题仍然存在,请首先检查已安装的软件包

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


在我的例子中,通过nuget将解决方案的Webfleep/Modernizer/ANTLRv3包更新到1.6.0/2.8.3/3.5.0.2版会导致所有问题和自感男性型秃发。

您使用的是ReSharper吗?在我将Resharper.ExternalAnnotations包升级到8.2.2001.1版之前,我有R#give me Razor错误。您可以通过ReSharper>扩展管理器访问扩展。。。菜单选项。我没有使用ReSharper。谢谢你的邀请!真奇怪。我们必须做相反的事情,使用5.0.0.0作为版本,而不是我们实际使用的5.2.0.0。。。