Razor文件(.cshtml)中的IntelliSense停止工作


73

Intellisense在剃刀文件中不起作用:

在此处输入图片说明

在我的web.conifg文件中(在Views文件夹中)显然是正确的:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <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.Routing" />
                <add namespace="System.Web.Optimization" />

                <add namespace="MvcSiteMapProvider.Web.Html" />
                <add namespace="MvcSiteMapProvider.Web.Html.Models" />

                <add namespace="DevTrends.MvcDonutCaching" />
            </namespaces>
        </pages>
    </system.web.webPages.razor>

    <appSettings>
        <add key="webpages:Enabled" value="false" />
    </appSettings>

    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <handlers>
            <remove name="BlockViewHandler" />
            <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
        </handlers>
    </system.webServer>
</configuration>

1
尝试更新的NuGet包,也安装VS2013更新1
亚历Dresko

尝试创建一个全新的ASP MVC项目,然后确定intellisense是否有效。
Alex Dresko 2014年

在新项目上工作。这个项目是行不通的!
ridermansb 2014年

1
分而治之,我的朋友。损坏的项目和新项目之间有一些重要的区别。您需要弄清楚区别是什么。
Alex Dresko 2014年

*我将views文件夹中的web.config复制到了我的项目中(没有用)*我检查了已安装的软件包,dll(和版本),并且一切正常。*我尝试使用Update-Package -Reinstall(没有用)重新安装软件包
ridermansb 2014年

Answers:


116

在IntelliSense突然开始出错并停止在视图中的HTML标记之间正确着色C#代码后,这对我有用:


只需删除文件夹中的内容 %LOCALAPPDATA%\Microsoft\VisualStudio\14.0\ComponentModelCache

如果您使用的是VS 2019,则版本文件夹名为16.0_<hash>


在此处输入图片说明

作为附加步骤,DevEnv.exe /setup如果上述步骤不能解决问题,则可以选择在VS的Developer Command Prompt中运行命令 (以管理员身份)。


4
刚刚在最新更新的VS2015U1上,这对我非常有用(只是删除缓存)
Ruben Bartelink '16

4
我只是删除了缓存,它是固定的。谢谢。
ADM-IT

1
创建新区域后,对于我的新观点,这个问题就开始出现。我刚刚删除了缓存文件并重新打开了VS,现在它可以正常工作了。谢谢!
迭戈·科蒂尼

1
哇,超级,谢谢!ComponentModelCache是​​我在VS 2013/15中经常使用的地方,我总是很方便地找到该文件夹​​的快捷方式:如果有任何中断,请删除该文件夹。VS 2017不太容易发生缓存损坏,因此我几乎忘了它。我的问题是完全相同的:Razor中没有IS,并且删除了固定的文件夹。希望他们能在VS 2042之前获得连贯的缓存...
kkm

1
损失了2个小时,在执行devenv / setup之后,它终于对我有用。
Marcelo De Zen

19

当intellisense停止在razor文件中工作时,很有可能可以通过三个步骤来解决此问题:

  1. 关闭Visual Studio
  2. 删除解决方案用户选项文件(<solution-name>.suo
  3. 重新打开Visual Studio中的解决方案。

可在此处找到有关智能感知选项的其他解决方案


9
有时第1步就足够了
ksaylor11

1
我必须显示隐藏文件才能找到我的解决方案选项(.suo)文件
SteveB

15

一个可能的原因是,如果将您的网页设置为mvc4应用程序的版本3,则只需在web.config应用程序设置中将其更改为版本2。

  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />

1
确实,回滚到版本2可以使情报恢复活力。但是我的System.Web,Webpages参考实际上是版本3.0.0,而我的项目是MVC 5!这很奇怪
Anestis Kivranoglou 2015年

我认为mvc 5随网页版本3一起提供。这听起来是正确的。也许您引用的dll不正确?
约翰

还检查了dll,版本匹配。即使是从头开始创建新的MVC 5项目,也会破坏智能。我已安装VS 2012 Update 4 + Web Tools 2013.1
Anestis Kivranoglou'15 2015年

1
刚发现问题..... Xamarin插件导致了该错误,这是一个已知问题。
Anestis Kivranoglou's 2015年

14

将项目升级到MVC 5.2.3之后,我在Visual Studio 2013中遇到了这种情况。对我有用的是将“ Views”文件夹中的web.config替换为以下内容,因为NuGet软件包为该web.config保留了许多MVC 4.0引用。

<?xml version="1.0"?>

<configuration>
  <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="InvestureApps" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

  <appSettings>
    <add key="webpages:Enabled" value="false" />
  </appSettings>

  <system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
</configuration>

我的views / webconfig文件看起来完全像这样,仍然..相同的问题:(
Scuba Steve

2
这与删除ComponentModelCache结合在一起对我有用。
WillC '17

刚刚基于此更新了版本,并删除了ComponentModelCache
下注

最后!那也对我有用。在我更新了views文件夹中的web.config之后,还与删除ComponentModelCache相结合
Mevius

4

我的项目从VS2012升级到VS2013,这为我解决了问题:

将Web.config文件中的“ webpages:Version”从“ 1.0.0.0”更改为“ 2.0.0.0”

<appSettings>
    <add key="webpages:Version" value="2.0.0.0" />

我的出于某种原因设置为5(在VS2017中)更改为3似乎已解决了该问题
bsod_18年


3

我遇到过同样的问题。尽管我使用的是VS 2012,但有适用于VS 2013和VS 2012的下载。我已经尝试了许多修复程序(与web.config有关,通过NuGet卸载/重新安装MVC等),但是只有一个对我有用的东西正在安装它(对我来说,对于VS 2012)

VS 2013与ASP.NET和Web Tools 2013.1 http://www.asp.net/downloads


1
对于VS 2012,我尝试了“带有ASP.Net和Web工具2013.1的VS 2012”,它的工作原理是:microsoft.com/en-au/download/details.aspx?
id=41532

3

我在Visual Studio 2017中遇到了这个问题-我进入了解决方案所在的目录并删除了.vs文件夹(这是一个隐藏文件夹),这解决了我的问题。


1

我遇到了类似的情况,然后意识到剃刀视图未包含在我的项目中。一旦将其包含在项目中(右键单击视图文件并选择“包含在项目中”),就会出现Intellisense。


1
在进行Umbraco项目时,我在VS Proffessional 2019中遇到了这个问题,这也为我解决了这个问题。谢谢你的提示!
GittinJiggyWithIt

1

看起来有很多原因导致此问题。

在我的情况下,我从另一个项目复制了一些代码/文件,此后Intellisense不起作用,这是因为我在复制的文件中使用了不同的命名空间,这使得Intellisense不起作用。正确的名称空间使它可以再次工作。


1

就我而言,上述方法均无效,这是我为解决问题而采取的措施:

用VS加载项目并保留它,然后使用Notepad ++或任何您喜欢的文本编辑器打开your-project-name.csproj并进行一些更改,例如删除Content标签(不用担心,它将返回一次您将其重新包含在VS Solution Explorer中),一旦保存更改,Visual Studio IDE将检测到您的更改并要求您重新加载整个项目,单击“是”,然后单击我的代码IntelliSense。

我正在使用:Microsoft Visual Studio Professional 2019预览版16.3.0预览版2.0

希望能帮助到你。


0

注意Web应用程序中是否有区域,Areas / Views文件夹中还有另一个Web.config文件,在我的情况下,此配置文件是罪魁祸首。

另外,您可能必须在对Web.config进行更改后重新启动Visual Studio,重建解决方案似乎并没有接受更改,至少对我而言不是。


只是好奇-区域/视图/元凶中的Web.config是怎么回事?解决方法基本上是否符合Kevin Hirst的回答?
唐·奇德尔

0

我遇到了一个非常类似的问题:现有应用程序无法为Razor视图提供智能感知,但是我可以创建一个全新的应用程序,并且可以正常工作。我可以通过使用脚手架为实体创建新的控制器和视图来解决该问题。智慧适用于新实体,适用于现有实体!



0

经过大量搜索和测试,我发现,无需安装2013或任何升级版本,您仍然可以解决2012年的着色问题。安装“ Visual Studio 2012的ASP.NET和Web工具2013.1”可以为我解决此问题。关闭VS 2012,然后在安装后重新启动。

下载链接为 https://www.microsoft.com/zh-cn/download/details.aspx?id=41532

它为我工作。希望它对大家有用。



0

我只需要右键单击“添加到项目”以获取新视图,即可使用Intellisense。


0

在我的情况下,安装Resharper(2018.3 EAP 3)的较新版本(每晚构建)很有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.