Visual Studio 2015 Broken Razor Intellisense

时间:2015-07-23 08:11:57

标签: c# asp.net-mvc razor intellisense visual-studio-2015

安装然后修复我的 VS2015 实例后,我仍然无法使用intellisense(服务器端)在我的MVC视图中工作。 当我第一次在会话中打开一个 .cshtml 文件时,我会收到消息提示的警报,然后发送到Activitylog文件。 在ActivityLog.xml(简短版本)中检索到错误消息:

  

System.ArgumentException:已添加项目。键入   字典:'RazorSupportedRuntimeVersion'

以下是完整版:

  

System.Reflection.TargetInvocationException:抛出了异常   通过调用的目标。 ---> System.ArgumentException:Item   已被添加。键入字典:   'RazorSupportedRuntimeVersion'要添加的密钥:   'RazorSupportedRuntimeVersion'来了   System.Collections.Hashtable.Insert(Object key,Object nvalue,Boolean   添加)在System.Collections.Hashtable.Add(Object key,Object value)at   System.Collections.Specialized.HybridDictionary.Add(Object key,Object   价值)   Microsoft.VisualStudio.Utilities.PropertyCollection.AddProperty(对象   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)---内部异常堆栈跟踪结束--- at   System.RuntimeMethodHandle.InvokeMethod(Object target,Object []   参数,签名sig,布尔构造函数)at   System.Reflection.RuntimeConstructorInfo.Invoke(的BindingFlags   invokeAttr,Binder binder,Object []参数,CultureInfo文化)   在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 []   在System.Activator.CreateInstance(Type类型,   对象[] args)at   Microsoft.Html.Editor.ContainedLanguage.Common.ContainedCodeErrorTaggerProvider'1.CreateTagger [T](ITextBuffer   textBuffer)at   Microsoft.VisualStudio.Text.Tagging.Implementation.TagAggregator'1.GatherTaggers(ITextBuffer   textBuffer)

如果有任何帮助,我会进行一些字体着色自定义,并拥有Web Essentials,Bundler&安装了Minifier和Web Compiler扩展。

更新:当我打开现有的Web应用程序或从头开始创建一个全新的Web应用程序时,就会发生这种情况。 还有一个 VS2013 的实例在同一台机器上安装并运行。

No intellisense at all

正如你从上面的图片中看到的那样,我根本没有智能感知,也没有任何代码着色。

有关如何修复它的任何线索? 提前谢谢。

17 个答案:

答案 0 :(得分:162)

这对我来说也经常出现,似乎与扩展更新相关,但我还没有能够责怪任何具体的内容。我能够发现的是一种不那么具有侵入性的解决方案。

在我的情况下,删除此目录的内容允许IDE恢复:

%LocalAppData%\Microsoft\VisualStudio\14.0\ComponentModelCache

编辑:我刚刚遇到过这个也很方便的人 - Clear MEF Component Cache(打开VSIX图库)

答案 1 :(得分:127)

我通过重置用户数据来解决这个问题

devenv.exe /resetuserdata

并删除" .vs"我项目中的文件夹。

警告:这将重置您的所有用户设置。从本质上讲,它就像重置为出厂默认值。您将丢失任何自定义键盘快捷键,已安装的扩展程序等。

答案 2 :(得分:11)

FWIW,我在两台不同的机器上遇到了VS 2015 Enterprise的这个问题。在一台机器上,重置用户数据会使问题消失(暂时)。在另一台机器上,我不得不完全卸载并重新安装VS,问题消失了一段时间。在这两台机器上,安装扩展程序后出现问题(安装Web Essentials时一次,安装Git Diff Margin时一次)。

我烧毁了一个MSDN技术支持案例,答案是......是的,它是一个错误,MS知道它,并且他们正在研究它。

不是一个特别可行的答案,但仍然是一个答案......

编辑:关于解决这个问题的问题,自从我发布这个"回答"后,我已经多次遇到这个问题了。最近,我安装了NuGet Package Manager的更新,当VS重新启动时,它开始出现这个问题。我跑了devenv.exe /resetuserdata,但那并没有帮助;它还是坏了。所以我再次尝试(跑devenv.exe /resetuserdata)和bada bing bada繁荣,问题消失了(现在)。道德似乎是"如果一开始你不会成功......"

答案 3 :(得分:8)

Resharper可能发生了二重奏 它将在未来版本中修复,但截至目前(版本10.0.2)它已被破坏。 Resharper会覆盖Visual Studio的intellisense,因此无法正常工作。 这也解释了为什么运行devenv.exe /ResetUserData修复它,因为它删除了Resharper

通过菜单手动将智能感知电源返回VS:
ReSharper>> Enviroment>> IntelliSense>>填写以下内容:
enter image description here

这就是来自VS的intellisense应该如何看待:
enter image description here

答案 4 :(得分:6)

我遇到了同样的问题,但原因与其他答案不同。

Visual Studio的更新,我怀疑2015年9月的TypeScript更新,卸载了Visual Studio 2015的Web Developer Tools组件。这导致Intellisense无法工作。

我再次在安装程序选项中安装了Web Developer Tools,并在安装后删除了ComponentModelCache。这对我有用。

答案 5 :(得分:4)

这马上为我修好了。

在Visual Studio中:

单击工具 - >选项 - >文本编辑器 - >所有语言 - >常规 取消选中“自动列表成员” 取消选中“参数信息” 选中“自动列表成员”(是的,您刚刚取消选中的成员) 检查“参数信息”(再次,您刚刚取消选中的那个) 单击“确定”

答案 6 :(得分:4)

加我2美分。 之前的解决方案都没有为我工作,然后我找到了这个链接:

http://www.c-sharpcorner.com/blogs/how-to-resolve-intellisense-issue-in-visual-studio1

特别是这个

  

解决方案4:

     

接下来,从以下位置重置设置。

     

工具 - >导入和导出设置 - >重置所有设置。

从那里我选择 Visual C#

答案 7 :(得分:1)

仅供参考:我的VS 2015 PRO安装已完全安装所有第三方。

我尝试了所有可能的解决方案,在文章中,它没有帮助我。 Craig Goldensoph所写的内容帮助我部分地为我找到了解决方案。

首先我做了:取消选中Text Editor的所有复选框 - >所有语言 - >一般声明完成: enter image description here

单击确定后 - 再次重新打开选项对话框:并检查所有相同的部分: enter image description here

再次应用设置。 您必须重新启动Visual Studio。重新启动后需要一段时间才能加载,但之后它对我有用。

答案 8 :(得分:1)

如果其他选项都不起作用,则有一种解决方法。进入'。'操作员按下" Ctrl + Space"应强制显示Intellisense对话框的键。

使用.cshtml MVC razor文件时遇到此问题。

答案 9 :(得分:1)

还有另一种解决方案,无需重置所有用户数据

(但只有窗口布局/工具栏):

关闭所有VS2015实例, [最终备份,并] 删除文件夹:

"[User Directory]\AppData\Roaming\Microsoft\Visual Studio\14.0"

现在,重新打开VS2015:布局重置为出厂预设,但Razor语法可以正常工作

答案 10 :(得分:1)

有时,VS Ide根本不显示Intellisense。我只是关闭解决方案。关闭VS.然后重新打开它,问题就解决了。

答案 11 :(得分:1)

/ResetUserData解决方案是您最好的选择,但我也认为我找到了可能的原因......

我目前正在使用Umbraco在BackOffice中创建宏部分。当我们创建这些文件时,单击隐藏/显示所有文件按钮以在我的解决方案中显示宏部分,并且Razor语法突出显示似乎停止工作所以我的猜测是在您的解决方案中引入的新文件不是直接创建的通过VS导致这个问题。

即使将文件添加到解决方案中,语法突出显示也不起作用。

答案 12 :(得分:0)

我的keester有轻微的痛苦,但似乎有效。在我的情况下,它是一个.aspx文件,不再做intellisense(在我愚蠢地改变了.aspx文件名...学到的经验教训!)

  1. 我将我的所有代码(.aspx& .cs)复制到记事本中。例如。
  2. 删除了.aspx文件(后者又删除了所有子文件)。
  3. 保存了我的项目。创建了一个具有相同名称的新.aspx文件。
  4. 从记事本中复制/粘贴我的代码。
  5. 保存了。
  6. 再次尝试智能感知。它奏效了!
  7. 围绕方式,但没有卸载/ vs重新安装那么糟糕,这完全是一种过度杀伤力。 祝大家好运!希望MS能够在这些年中获得这个固定的一年!

答案 13 :(得分:0)

这可能听起来很有趣但只做一件事......

将断点放在任何一行上,然后等待5秒钟就行了 转到第一行并在那里放置断点,当你设置断点时它将要求断点设置。 enter image description here 单击该设置并关闭该设置。 完成。你的intellisense现在正在工作。

我有VS 2015社区版。以前有VS 2015企业版,它发生在那,但在获得社区后我发现同样的情况和相同的解决方案都适用于两者。

我在工作期间意外地找到了解决方案。当项目没有运行时也这样做。你也可以删除那个断点。

答案 14 :(得分:0)

你不需要重置所有内容只需从public void SendNotification() { string message = ""; string constr = "xxxxxxxxxxxxx"; using (SqlConnection connection = new SqlConnection(constr)) { string query = "XXXXXXXXXX"; using (SqlCommand command = new SqlCommand(query, connection)) { command.Notification = null; SqlDependency dependency = new SqlDependency(command); dependency.OnChange += new OnChangeEventHandler(dependency_Onchange); connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { message = message + "<br>" + reader.GetSqlValue(0); notifications_count = notifications_count + 1; _IsUnread = 1; } } } } private void dependency_Onchange(object sender, SqlNotificationEventArgs e) { if (e.Type == SqlNotificationType.Change) { SendNotification(); } } 删除所有文件并重启VS,就可以了。

答案 15 :(得分:0)

我在另一个问题上发布了这个答案,只是因为我想阻止人们浪费我浪费的时间。我的问题是我将文件添加到项目中,但不包括在内。所以我选择显示所有文件:

enter image description here

然后选择包含文件夹:

enter image description here

问题仅在您将MVC网站作为项目打开时出现,而不是在您直接将其作为网站打开时显示。

答案 16 :(得分:0)

我只能通过更新网页版本来解决这个问题,我在另一个类似问题中提到过:

Razor intellisense not working in VS 2015