VS 2015 Razor Autocomplete/Intellisense下拉列表在下拉后立即隐藏

VS 2015 Razor Autocomplete/Intellisense下拉列表在下拉后立即隐藏,razor,visual-studio-2015,intellisense,Razor,Visual Studio 2015,Intellisense,在VS 2015中,只有在Razor(.cshtml)文件中,大约一半的时间自动完成/建议列表/智能感知无法正常工作(抱歉,不确定实际术语…当您键入对象并点击,属性和方法列表显示要从中选择时) 其行为是,当我点击,列表会弹出几秒钟,然后关闭。它发生得太快了,我试着快速地退格,退格,退格,循环几次,至少可以看到我需要的名字,但我通常找不到,最后不得不从代码的其他地方找到确切的名字。非常恼人 它偶尔发生,我找不到真正的模式。以下是我已经排除的模式: 打开的文件似乎无关紧要 我是否关闭/重新打开该文

在VS 2015中,只有在Razor(.cshtml)文件中,大约一半的时间自动完成/建议列表/智能感知无法正常工作(抱歉,不确定实际术语…当您键入对象并点击
,属性和方法列表显示要从中选择时)

其行为是,当我点击
,列表会弹出几秒钟,然后关闭。它发生得太快了,我试着快速地
退格
退格
退格
循环几次,至少可以看到我需要的名字,但我通常找不到,最后不得不从代码的其他地方找到确切的名字。非常恼人

它偶尔发生,我找不到真正的模式。以下是我已经排除的模式:

  • 打开的文件似乎无关紧要
  • 我是否关闭/重新打开该文件似乎无关紧要
  • 我是否导航到另一个文件并返回似乎并不重要
  • 它将在同一个文件中多次打开和关闭
  • 它似乎与任何特定的对象/属性/方法都不相关
我已经检查了我的所有选项(Razor似乎没有文本编辑选项?),尝试了清除缓存、重新加载解决方案/项目、重新启动VS,所有这些似乎仍然没有提供任何模式

有没有人遇到过这个问题,并且知道我还能在哪里解决它

示例 这里有一个非常简单的例子。。。新项目,很少的代码/文件,非常简单的视图。当
模型停止时,
应该具有常用的基本方法和“Items”集合。它突然出现,然后消失。。。不涉及lambdas/复杂视图解析(这也是可复制的):

更新:模式

我注意到的事情:

  • 如果我输入的是
    @modelns.ns.ns.type
    ,那么它很少出现在名称空间的“基”端。这是因为我更接近它发生的类型。这是间歇性的
  • 在某些情况下,每一次它都工作得非常好。例如,我经常使用DevExpress工具,但从未见过它们的任何扩展上的行为(因此,
    @Html.DevExpress()。
    (以及其他类似的,不一定是DevEx模型)永远不会导致问题)
  • 当我访问我的
    @Model
    (这是我最想要它的地方!)时,几乎每次都会发生这种情况。我发现有些情况下每次都可以重复(见上面的例子),但大约90%+
  • 偶尔,当我在对象树中工作时,一个会失败,而下一个会工作(例如:
    @models ProjName.Web.App.Subscriptions.models.AccountCreateVM
    …它可能会在
    订阅上失败,但在
    模型上工作正常
  • 有时,开始在autocomplete中键入名称会将其重新启动,并再次开始工作。在上面的示例中,开始为
    AccountCreateVM
    键入
    Acc
    会导致它再次开始工作

在整个VS2015的lambda声明期间,我都会遇到这种情况

它发生在编辑代码“mid document”时,例如,如果在我键入的位置后面有a)或}之外的内容,则会发生这种情况。VS似乎很难判断当前语句的结束位置&下一个语句的开始位置

即使显式调用,以下代码也将始终无法在此期间触发Intellisense

var subset = initialSet.Where(x => x.
var result = new Whatever();
在Razor中,在现有文本之间编辑代码并使用lambda语句是非常常见的:

<strong>@Html.DisplayFor(m => m.</strong>
@Html.DisplayFor(m=>m.
这可能就是为什么你只能在剃须刀上体验到这一点

我解决这个bug的方法就是编写一个函数来关闭这个方法

var subset = initialSet.Where(x => x.)
var result = new Whatever();

<strong>@Html.DisplayFor(m => m.)</strong>
var subset=initialSet.Where(x=>x.)
var result=new Whatever();
@Html.DisplayFor(m=>m.)
Intellisense可在该时段触发

如果您使用的方法要求的最小值不仅仅是lambda(如RadioButtonOn),那么还需要为每个额外参数输入逗号

<strong>@Html.RadioButtonFor(m => m.,)</strong>
@Html.radiobutton(m=>m.)

如果Intellisense出现了,但立即又消失了,那么到目前为止,我找到的最好的解决方案是只键入任何已知成员的几个字母,然后使用Ctrl-Left跳回句点,并再次触发Intellisense(Ctrl-Space或backspace-retype)。这通常会让它出现并停留。您必须删除之后键入的字符,这可能会令人沮丧。

我也有同样的错误,我通过删除组件模型缓存的所有文件来修复它

这是路径:

Users\YourName\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache


希望这有帮助

我还没有找到根本原因,但在所有情况下,
CTRL+SPACE
都有效。这不是最好的,但是光年总比没有好


(这个快捷键不是我以前使用过的,所以这可能是标准行为,但是…)如果你在dot
模型上。
自动完成列表消失,CTRL+SPACE会持续地将它恢复,当它恢复时,它会保持不变如果只有一个可能的自动完成成员,它将在CTRL+SPACE时自动为您填充该成员

当我知道内容时,我使用CTRL+j作为临时解决方案

或在没有右括号的情况下继续书写,可使用补全:

@Html.LabelFor(m=>m.Name

只需确保
没有触及您正在编辑的文本,弹出窗口将保持不动

而不是

@Html.Partial("ManageGrid", Model.)
@Html.Partial(“ManageGrid”,Model.)

使用

@Html.Partial("ManageGrid", Model.
@Html.Partial(“ManageGrid”,Model.)

智能感知似乎是
@Html.Partial("ManageGrid", Model.)
@Html.Partial("ManageGrid", Model.