【问题标题】:Razor Syntax gives errors in View before compiling (No intellisense)Razor 语法在编译前在 View 中给出错误(无智能感知)
【发布时间】:2014-09-19 20:08:15
【问题描述】:

我正在浏览 NuGet 包列表,我正在更新引导程序、jQuery 等所有内容,但在我这样做的同时,我不假思索地更新了 Microsoft.Owin 和另一个包(可能已经是 EF 或其他东西),这是一个主要版本更新...哎呀。

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

当我打开我的任何视图......在项目的任何地方,我得到这个:

请注意使用 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>

及以下:&lt;runtime&gt;&lt;assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"&gt;

我有这些:

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

在我的项目中的每个 View 文件夹 中,我在 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>

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

【问题讨论】:

  • 您在使用 ReSharper 吗?在我将 Resharper.ExternalAnnotations 包升级到版本 8.2.2001.1 之前,我有 R# 给我 Razor 错误。您可以通过 ReSharper > Extension Manager... 菜单选项访问扩展。
  • 我没有使用 ReSharper。感谢您的提问!

标签: c# entity-framework-6 razor-2 .net-4.5 asp.net-mvc-5.2


【解决方案1】:

找了几天,终于找到了这个页面:MVC Razor view Intellisense broken in VS 2013/2015/2017

在我的 Views > 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 版本。我之前只检查了&lt;sectionGroup&gt; 标签中的正确版本的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 文件都有不同的版本。异常诡异。

【讨论】:

  • 确实很奇怪。我们必须反其道而行之,使用 5.0.0.0 作为版本,而不是我们实际使用的 5.2.0.0...
【解决方案2】:

我花了几天时间研究这个问题,现在等待我的头发长回来。但可惜的是坚持。

Visual Studio 2013 更新 4, 目标框架 4.5.1 System.Web.Mvc 5.2.2.0

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多