Выпадающее меню VS 2015 Razor Autocomplete / Intellisense скрывается сразу после раскрывающегося списка

В VS 2015, только в файлах Razor (.cshtml), примерно в половине случаев автозаполнение / список предложений / intellisense работает некорректно (извините, не уверен фактический термин ... когда вы вводите объект и нажимаете . и список свойств и методов показывает выбор)

Поведение таково, что когда я нажимаю ., список всплывает на долю секунды, а затем закрывается. Это происходит так быстро, что я пытаюсь выполнить быстрый Backspace, ., Backspace, . цикл несколько раз, чтобы хотя бы увидеть нужное мне имя, но обычно я не могу его понять и вынужден искать точное имя в другом месте из кода. Сильно раздражает ...

Это случается спорадически, и я не могу найти никакой реальной закономерности. Вот шаблоны, которые я исключил:

  • Открытый файл не имеет значения.
  • Неважно, закрываю ли я / снова открываю файл.
  • Перехожу ли я к другому файлу и обратно, не имеет значения
  • Он будет работать / не работать несколько раз, включая и выключая один и тот же файл
  • Кажется, это не имеет отношения к какому-либо конкретному объекту / свойству / методу

Я проверил все свои параметры (похоже, нет параметров редактирования текста для Razor?), Пробовал очистить кеши, перезагрузить решение / проекты, перезапустить VS, все из которых, похоже, по-прежнему не предоставляют никаких шаблонов.

Кто-нибудь сталкивался с этим и есть идеи, где еще я могу это исправить?

Пример Вот очень простой пример ... новый проект, очень мало кода / файлов, очень простой вид. Там, где Model. останавливается, у меня должны быть обычные базовые методы и коллекция «Items». Он появляется на долю секунды, а затем исчезает ... без анализа лямбда-выражений / сложного представления (это тоже воспроизводимо):

введите описание изображения здесь

Обновление: выкройки

Что я заметил:

  • Если я ввожу @model ns.ns.ns.type, это редко происходит ближе к «базовому» концу пространств имен. Это происходит по мере того, как я подхожу к типу. Этот прерывистый.
  • В некоторых случаях он работает отлично каждый раз. Например, я часто использую инструменты DevExpress и никогда не видел такого поведения ни в одном из их расширений (так что @Html.DevExpress(). (и другие подобные, не обязательно модели DevEx) никогда не вызовут проблемы)
  • Это происходит почти все время, когда я обращаюсь к своему @Model (именно там я больше всего этого хочу!). Я нашел несколько случаев, когда это воспроизводимо каждый раз (см. Пример выше), но это около 90% +
  • Иногда, когда я работаю с деревом объектов, один выходит из строя, а другой работает (например: _11 _... он может выйти из строя на Subscriptions, но работать нормально на Models)
  • Иногда начало ввода имени в автозаполнении приводит к тому, что он снова включается, и он снова начинает работать. В приведенном выше примере при вводе Acc для AccountCreateVM он снова начинает работать.

person jleach    schedule 25.03.2016    source источник
comment
Дело не только в тебе. Это происходит и со мной внезапно. Понятия не имею почему.   -  person powlette    schedule 12.04.2016
comment
Здесь тоже происходит ... и новая установка ...   -  person Chris Nevill    schedule 28.07.2016
comment
Картер Медлин опубликовал решение. Решил проблему установкой последней версии Microsoft ASP.NET и Web Tools. Visual Studio в разделе Инструменты- ›Расширения и обновления ...-› Обновления- ›Галерея Visual Studio   -  person AlejandroDG    schedule 08.08.2019


Ответы (8)


Я не нашел первопричины, но во всех случаях CTRL+SPACE работает. Это не лучший вариант, но световые годы лучше, чем ничего.

(этот ярлык не тот, который я использовал в прошлом, поэтому это, вероятно, стандартное поведение, но ...) Если вы находитесь в точке Model. и список автозаполнения исчезает, CTRL + SPACE последовательно возвращает его , а когда он вернется, он останется! Если есть только один возможный элемент автозаполнения, он автоматически заполнит его за вас при нажатии CTRL + SPACE

person jleach    schedule 03.08.2016
comment
Это действительно помогает, но как только я набираю следующий символ, раскрывающийся список intellisense снова исчезает. - person Lopsided; 01.12.2016
comment
@Lopsided - используйте клавиши со стрелками, чтобы перейти к нужному элементу, который должен держать раскрывающийся список открытым (обычно только несколько элементов в списке, поэтому вполне работоспособно). - person jleach; 01.12.2016
comment
Наконец, я использовал CTRL+SPACE удерживаемую клавишу со стрелкой, чтобы предотвратить исчезновение раскрывающегося списка - person Fabrice T; 06.10.2017
comment
Картер Медлин опубликовал решение. Решил проблему установкой последней версии Microsoft ASP.NET и Web Tools. Visual Studio в разделе Инструменты- ›Расширения и обновления ...-› Обновления- ›Галерея Visual Studio - person AlejandroDG; 08.08.2019

Это происходит со мной на протяжении всего VS2015 во время лямбда-выражений.

Это происходит при редактировании кода «в середине документа», например, если есть что-то, кроме а) или}, следующее за тем местом, где я печатаю. VS, похоже, изо всех сил пытается сказать, где заканчивается текущий оператор и начинается следующий оператор.

Следующий код постоянно не запускает Intellisense в заданный период, даже если он вызывается явным образом.

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

В Razor очень часто редактируют код между существующим текстом и используют лямбда-выражения:

<strong>@Html.DisplayFor(m => m.</strong>

Вероятно, поэтому вы испытываете это только в Razor.

Чтобы обойти эту ошибку, я просто пишу), чтобы закрыть метод.

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

<strong>@Html.DisplayFor(m => m.)</strong>

Затем по периоду можно активировать Intellisense.

Если вы используете метод, для которого требуется как минимум больше, чем просто лямбда (например, RadioButtonFor), вам также необходимо поставить запятую для каждого из дополнительных параметров.

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

Если Intellisense появляется, но сразу же снова исчезает, лучшее решение, которое я нашел до сих пор, - просто ввести несколько букв любого известного члена, а затем с помощью Ctrl-Left вернуться к точке, и снова запустите Intellisense (Ctrl-Пробел или возврат с повторным вводом). Обычно это заставляет его появляться и оставаться. Впоследствии вам придется удалить символы, которые вы ввели, что может расстраивать.

person friggle    schedule 19.04.2016
comment
Я замечаю новые закономерности, и большая их часть состоит в лямбдах (которые широко распространены в бритве), но это не единственное место. Например, одной из первых вещей, которые я ввожу в пустое представление, является @model ns.web.models.model, и он не может пройти мимо первого пространства имен. Я буду продолжать делать записи на своем конце и, возможно, когда-нибудь даже получу ответ, но я думаю, что это хорошая его часть. - person jleach; 20.04.2016
comment
Я встревожен тем, что эта ошибка может быть настолько распространенной и повторяемой, что она не только попала в релиз, но и не исправлена, хотя VS2015 находится в обновлении 2. - person friggle; 20.04.2016
comment
Что мы должны сделать, чтобы ускорить исправление этой ошибки? У меня такая же проблема - это частично работает (сначала удаляя скобку), но мне нужно один раз вернуть точку назад, чтобы список intellisense оставался видимым. Обычно это происходит только в ламдах, но иногда и в других местах. Мне нравится делать что-то быстро, и для этого очень важен intellisense, особенно автозаполнение. - person Cheesus Toast; 09.06.2016
comment
Знаете ли вы, что вместо удаления точки и повторного ввода вы можете нажать ctrl + space, чтобы открыть Intellisense? - person wf4; 26.07.2016
comment
Решение wf4 работает - по крайней мере, пока они его не исправят (2018?)! - person Chris Nevill; 28.07.2016
comment
То, что описано в этом ответе, является распространенной проблемой в VS и легко решается, но это не то, о чем спрашивает OP (я могу сказать, потому что у меня такая же проблема, что и OP). AFAIK проблема с исчезновением intellisense возникает только внутри представления Razor (помните, что слово «исчезнуть», т.е. оно должно сначала появиться / сработать, а затем исчезнуть). Это может происходить как с закрывающими круглыми скобками, так и без них. Очень странно. - person Francisco; 07.09.2016
comment
@Francisco Я добавил трюк для работы с "исчезающим" Intellisense. - person friggle; 08.09.2016
comment
@friggle да, я знаю об этом трюке, я использую его около года, но очень неприятно использовать его = / Хуже всего то, что я обычно просто набираю несколько символов, а сразу после этого нажимаю 'enter' или 'tab' или 'space' (мышечная память, на самом деле) ожидая, что VS выполнит автозаполнение свойства или метода или мы, но уже слишком поздно, потому что окна уже исчезли, поэтому мне нужно ctrl + Z, чтобы выйти из него . Если бы хотя бы он был более последовательным, я бы попытался предсказать ошибку. К сожалению, это не так ... - person Francisco; 08.09.2016

Просто убедитесь, что ) не касается текста, который вы редактируете, и всплывающее окно останется.

Вместо того...

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

Использовать...

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

Кажется, что intellisense сбивается с толку, касаясь закрывающих скобок. Не идеально, но это был единственный способ заставить его работать на меня постоянно.

person Carter Medlin    schedule 13.12.2016
comment
Эта проблема уходит, а затем возвращается, как плохая копейка (английское выражение). Я постараюсь запомнить этот простой обходной путь! - person Andy Brown; 21.08.2017

В моем конкретном случае мне удалось решить проблему, установив последнюю версию Microsoft ASP.NET и веб-инструментов.

https://marketplace.visualstudio.com/items?itemName=JacquesEloff.MicrosoftASPNETandWebTools-9689

Как только я его установил, проблема исчезла. Вполне вероятно, что это обновление исправило что-то, что можно было исправить в более старой версии, но в любом случае я счастлив.

(Я нашел это в Visual Studio в разделе Инструменты-> Расширения и обновления ...-> Обновления-> Галерея Visual Studio)

person Carter Medlin    schedule 13.12.2016
comment
Это сработало и для меня. Проблема начала возникать у меня после установки VS 2015 Update 3. - person Michael Gagne; 10.03.2017
comment
Для меня это было решением. - person AlejandroDG; 08.08.2019

У меня была такая же ошибка, и я исправил ее, удалив все файлы кеша модели компонентов.

Это путь:

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

надеюсь, это поможет

person tocqueville    schedule 21.07.2016
comment
Спасибо, дайте несколько дней, чтобы попробовать несколько известных проблемных проектов. Скрещенные пальцы! - person jleach; 22.07.2016
comment
Извините, не повезло, все равно делает. - person jleach; 22.07.2016

Я использую ctrl + j как временное решение, когда знаю содержимое.

Или продолжайте писать без правых скобок, можете использовать завершение:

@ Html.LabelFor (m => m.Name

person lgt945    schedule 29.11.2016

Всякий раз, когда со мной случается эта неприятная вещь, я просто ставлю лишнюю точку, и тогда все работает. Мне каждый раз приходится ставить лишнюю точку. Например, если я напишу это, а интеллект мигает и исчезает:

@Html.TextBoxFor(m => m. 

тогда я просто делаю это:

@Html.TextBoxFor(m => m..

Теперь intellisense будет отображаться после первой точки. Я сделал это привычкой, пока у MS не было исправления.

person CodingYoshi    schedule 17.06.2017

Вместо того...

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

Использовать...

@Html.Partial("ManageGrid", Model.
person Tom McDonough    schedule 24.08.2017