Razor智能感知在VS 2015中无法工作

24
当我在2015年打开我的VS2013项目时,所有的razor视图都会出现红色波浪线。
@model,@Scripts @url,@Html.Partial,lambda表达式
智能感知现在似乎没什么用处,因为它好像缺少一半的选项。
我看到的解决方案包括删除.vs文件夹和devenv.exe /ResetUserData,但这些对我不起作用。
我正在使用与我的同事相同的安装文件进行VS 2015社区版的全新安装。他们中没有人遇到razor问题,而且他们正在处理与我相同的项目。
有什么办法可以解决这个问题吗?
编辑...更多信息! 我卸载/重新安装了VS 2015社区版,打开了我的项目,razor工作了! 然后我点击了一个提示,要求更新NuGet。NuGet更新安装后,VS重新启动,razor再次停止工作。所以NuGet更新破坏了razor??
每次我打开一个razor文件时,它都会显示“遇到异常。这可能是由于扩展引起的。您可以通过检查文件'C:\Users\Jonathan\AppData\Roaming\Microsoft\VisualStudio\14.0\ActivityLog.xml'来获取更多信息。 ”
在活动日志中,我得到以下错误。
"System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: Item has already been added. Key in dictionary: 'RazorSupportedRuntimeVersion' Key being added: 'RazorSupportedRuntimeVersion' at System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) at System.Collections.Hashtable.Add(Object key, Object value) at System.Collections.Specialized.HybridDictionary.Add(Object key, Object value) at Microsoft.VisualStudio.Utilities.PropertyCollection.AddProperty(Object key, Object property) at Microsoft.VisualStudio.Html.Package.Razor.RazorVersionDetector.Microsoft.Html.Editor.ContainedLanguage.Razor.Def.IRazorVersionDetector.GetVersion(ITextBuffer textBuffer) at Microsoft.Html.Editor.ContainedLanguage.Razor.RazorUtility.TryGetRazorVersion(ITextBuffer textBuffer, Version& razorVersion) at Microsoft.Html.Editor.ContainedLanguage.Razor.RazorErrorTagger..ctor(ITextBuffer textBuffer) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark) at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) at System.Activator.CreateInstance(Type type, Object[] args) at Microsoft.Html.Editor.ContainedLanguage.Common.ContainedCodeErrorTaggerProvider`1.CreateTagger[T](ITextBuffer textBuffer) at Microsoft.VisualStudio.Text.Tagging.Implementation.TagAggregator`1.GatherTaggers(ITextBuffer textBuffer)"

我该如何解决这个问题?


2
我有同样的问题,我不得不回到使用VS 2013... - Guigui
很奇怪。我已经读了很多人遇到这个问题,但是没有解决方案适用于某些情况。我打开的一些项目可以完美地工作,但大多数都不能。然而,对于我的同事们,它们都能正常工作。我已经切换回使用VS 2013来处理那些在2015中无法工作的项目 :( - mejobloggs
1
在我的电脑上,即使使用CodeDom编译器,在VS2015上一切都正常工作。然后,突然间,在UI中加载脚本时开始出现“System.Reflection.TargetInvocationException…”错误。一切仍然可以编译和正常工作,但我不能像这样操作。我正在追溯我的步骤,看看是否有任何扩展程序引起了这个问题,但这非常令人沮丧和低效! - HumbleBeginnings
1
在VS2015 Professional上进行了完全修复。甚至无法显示没有安装扩展的全新项目Razor!啊! - HumbleBeginnings
可能是Visual Studio 2015破损的Razor智能感知的重复问题。 - Mormegil
可能是Visual Studio 2015未对Razor进行语法高亮或智能感知的重复问题。 - fabriciorissetto
14个回答

22

您不需要使用 devenv.exe /ResetUserData 来解决这个问题,重置 Visual Studio 的所有配置。

相反地,尝试在关闭 Visual Studio 后只删除此目录的内容,然后重新打开它: %LocalAppData%\Microsoft\VisualStudio\14.0\ComponentModelCache


2
感谢ComponentModelCache解决方案,它非常有效 :) - kapsiR

14

以下是最终对我有用的方法: 开始 -> 运行 -> (或者 Windows 键 + R) 然后输入 "devenv.exe /resetuserdata" (当然不要加引号)

我不需要像其他人一样删除 .vs 文件。

另请参见:Visual Studio 2015 坏了 Razor 智能感知


4
很遗憾,对我来说没有用。我在原帖中提到我尝试了resetuserdata和删除.vs文件,但仍然无效。 - mejobloggs
1
很抱歉 - 我没有在您的OP中看到那个 -- 我一定是疯了。只是为了确认一下,我“做了”完整的修复,但不认为那是问题所在。另外,在重置环境时,请确保VS已关闭。我不认为它区分大小写,但再试一次可能值得一试。最后 - 您确认您的旧devenv是否已重命名为“C:\ Users \(用户名)\ AppData \ Roaming \ Microsoft \ VisualStudio”吗?有趣的是,我想重命名的是我的VS2013。不是要让您的痛苦更加严重,只是想帮助您,我的朋友。 :) 这真是令人沮丧! - HumbleBeginnings
我得为点赞这个答案而道歉,因为楼主说他已经尝试过了,但是它对我有效,所以感谢你提醒我去尝试。祝@mejobloggs好运:\ - pbristow
如果Intellisense完全崩溃,这将起作用。但它对于Razor不起作用的Intellisense没有帮助。仍然值得点赞。 - Timothy Groote
1
@SpencerK 不用客气!好奇的是,您是否说禁用了您的AV有时会消除问题?我不知道,但如果是这样,那就很好。正如我之前提到的(我认为),我实际上有一个小抄表,其中充满了键盘快捷键,可以帮助重新设置环境,当我不得不使用此修复程序时。微软最好找到问题并解决它(或告诉我们是什么原因),但至少比重新安装要好!干杯! - HumbleBeginnings
显示剩余7条评论

5

我只想说我按照指南逐行操作,即使我尝试了这里建议的一些devenv.exe命令,也成功解决了问题。我遇到这个问题已经好几个月了,现在终于解决了,感到非常高兴。 - Shafiq Jetha

5

我曾遇到同样的问题。ResetUserData没有起作用,等等。不过ResetUserData确实重置了一些被压制的对话框。最终弹出一个对话框,显示“'CompatiblityCheckerPackage'未正确加载”。它告诉我去我的用户文件夹(路径如下)检查ActivityLog.xml。结果发现WebEssentials 2015未正确安装且无法加载。我重新安装了WebEssentials,然后Intellisense错误消失了。

我的完整路径:

C:\Users\xxx\AppData\Roaming\Microsoft\VisualStudio\14.0\ActivityLog.xml

希望这能有所帮助。


5

这个方法可以解决类似的问题(我从某个地方得到了这个方法,不幸的是我忘记在Github上了)

  • 关闭VS Studio
  • 以管理员身份运行命令提示符
  • 在命令提示符中:
    > cd "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\Common7\IDE"
    > devenv /updateconfiguration
    > devenv /clearcache
    
    我希望以上内容对某些人有所帮助。

答案对我有用 :) 以下是我在cmd中运行的干净明了的3行代码。C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE>C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE>devenv /updateco nfigurationC:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE>devenv /clearcac he - Nadir

3
删除整个Solution并从源代码控制重新下载是我找到的唯一有效方法。在你能够在2015年中打开它之前,你可能需要先在VS 2013中打开这个解决方案...这是一个非常有bug的Visual Studio版本,微软!

编辑:另外一个奇怪的事情,至少对我来说...删除红色波浪线下划线的文本然后重新输入可以修复问题!可能只是偶然发生在我身上的事情。

3

你不需要更新任何东西。
只需从此文件夹中删除组件缓存: C:\ users \ xxx \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ ComponentModelCache, 它就能正常工作了。 试一下吧。


在Visual Studio 2017(企业版)中,我做了类似于这样的事情。在我的情况下,有几个以“15.0”为前缀的文件夹...在文件夹“C:\Users\xxx\AppData\Local\Microsoft\VisualStudio\15.0_a895a793”中,我找到了ComponentModelCache文件夹,将其删除,然后打开VS,我又可以继续工作了。谢谢! - Bob Tabor

3
我曾遇到同样的问题,但这里提供的解决方法都没有奏效。后来我发现,我的Views web.config文件引用了MVC 4版本,而主要的web.config文件则引用了MVC 5版本。因此,我能够编译成功,但智能提示不起作用。需要注意的是,MVC 4在VS2015中不受支持。至于为什么我的web.config文件不同,我并不清楚。可能是当我几个月前在VS2012中更新了MVC时,那个配置文件没有得到更新。

谢谢!这正是我所需要的。我以为这是一个web.config问题,但没有想到要检查Views文件夹内的web.config文件!:) 干杯 - Brendan

1
我知道这个话题已经过时了,但我刚刚遇到了同样的问题,我的解决方案与此处列出的任何一个都无关。
问题在于,在我的项目属性中,“输出路径”参数(生成-> 输出)是与“bin\”不同的文件夹。将其更改为“bin\”,重新打开工作室并重新构建我的项目后,一切都解决了!
希望能对某些人有所帮助。

1
是的!在我找到这个之前,我调试了很多小时。你有没有找到一种方法告诉智能感知去另一个目录查找?(我在这里开了一个问题[https://stackoverflow.com/q/67405205])。 - JHBonarius
很高兴我的建议对你有所帮助。不幸的是,我无法再访问我回答中提到的那个项目,并且由于某些原因,我还没有在VS 2019和针对.NET 4.5的Web项目中复现该问题。 - Oleg Safarov

1

对我来说,这些解决方案都没有起作用。有效的方法是确保我的网页版本是最新的。

<add key="webpages:Version" value="3.0.0.0" />

在web.config中,将版本2.0.0.0替换为其他版本。然后关闭并重新打开具有相同解决方案的Visual Studio。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接