Как включить intellisense в visual studio 2019

Обновлено: 05.07.2024

Я только что загрузил код Visual Studio, и мой Intellisense не работает автоматически.

Кажется, что две настройки, управляющие этим, установлены правильно:

Я получаю меню Intellisense, когда начинаю печатать и нажимаю «CTRL + Пробел», но это дает мне список всего, а не вещей, специально предназначенных для моего объекта.

Что я делаю не так?

  • Выбор project.json - файла открывает DNX-проект, и VSCode загрузит этот проект плюс проекты, на которые есть ссылки.
  • Выбор *.sln - файла открывает проект MSBuild. Он загрузит указанные *.csproj - проекты, а также одноуровневые или дочерние project.json - файлы, но не загрузит другие файлы проектов, на которые есть ссылка в файле решения.
  • Выбор folder заставит VSCode сканировать файлы *.sln и project.json , и VSCode попытается загрузить их все.

Просто переустановите расширение и перезапустите VSCode / PC.

Моя проблема заключалась в том, что OmniSharp была более старой версией. Я установил флаг для обновления до последней версии в файле Settings.json . Это гарантирует, что расширение всегда будет последней версией.

И перезапустил код VS. Это исправило это для меня.

В моем случае проблема была не в настройках VS Code. Ошибка возникла из-за поврежденного пути TEMP, настроенного в настройках среды профиля пользователя реестра моего ПК. Я получил эту ошибку из Справки -> Переключить инструменты разработчика -> Консоль. Ошибка была отмечена в консоли, когда я открыл новый файл машинописного текста.

Очевидно, этот путь был поврежден. После обновления переменных среды в настройках реестра VS-код IntelliSense начал работать. Проверка консоли - хорошее начало, чтобы найти основную причину этой проблемы.

У меня только что это произошло ( это не было предложений завершения кода). Решением для меня было изменение пакета VSCode Editor в Unity на предыдущую версию, а затем обратно на текущую версию.

Для меня это было с 1.2.0 на 1.1.3, а затем обратно на 1.2.0. Я считаю, что удаление и переустановка 1.2.0 дало бы то же самое.

Окно> Диспетчер пакетов> Редактор кода Visual Studio

В моем случае расширение не было включено

Для меня я долгое время работал без интернета. Раньше он работал, но потом остановился. Я закрыл + снова открыл VSCode со стабильным Wi-Fi-соединением, и в VSCode появилась вкладка Output , отображающая переустановку расширений. После этого все заработало!

Попробовав несколько вещей, я просмотрел журналы OmniSharp только для того, чтобы понять это, потому что у меня было два разных файла sln в моей рабочей области. Он подобрал «другой» и, следовательно, не работал. Я удалил его, снова открыл vs code, и все снова в порядке.

enter image description here

Этот случай был для существующего проекта, который раньше работал нормально. Открывается через "недавнюю" историю кода vs.

Для ядра dotnet. Я открыл файл * .csprog своего проекта, не внес никаких изменений и сохранил его с помощью редактора кода vs.

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

Для рассматриваемого проекта я был озадачен, увидев успешные журналы для каждой перезагрузки сервера Omnisharp, а также идеально чистые сборки и запуски. Озадаченность усилилась, когда я сравнил эти журналы Omnisharp с журналами проекта 2.2 и обнаружил, что они практически идентичны.

После удаления Mono изменилась одна деталь - способ запуска Omnisharp. Теперь он загружается из сценария оболочки, расположенного по адресу

/.vscode/extensions/ms-vscode.csharp-1.19.0/.omnisharp/1.32.18/run . Раньше сам Mono загружал сервер из исполняемого файла в

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

«Это расширение просматривает дерево папок в поисках project.json или * .csproj и использует его в качестве родительской папки для определения пространств имен».

Чтобы интеллект работал, расширение Visual Studio Code OmniSharp должно присутствовать вместе с Mono. Когда вы открываете папку проекта / решения, OmniSharp получает зависимости проекта либо из project.json, либо из файла решения dotnet (если проект / решение созданы с помощью других версий Visual Studio).

Итак, когда вы посмотрите на окно вывода omnisharp сразу после открытия папки проекта / решения, вы можете увидеть следующие строки

Опубликуйте это, вы можете увидеть пару строк, как показано ниже,

Они означают, что ваши проекты распознаются расширением OmniSharp.

Я знаю, что ждать 200 секунд слишком долго. Но не волнуйтесь, это не помешает вам больше работать с файлами проекта. Но помните, что IntelliSense будет автоматически доступен после успешной загрузки всех проектов в папке.

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

Надеюсь, моя информация вам поможет! Наслаждайтесь своим VSCode!

Что касается версии 0.5, я обнаружил, что мне нужно закрыть и снова открыть мои рабочие файлы, чтобы получить новую информацию intellisense, чтобы начать работать с моими собственными файлами. Обычно это происходит после того, как у меня открыт файл, который должен использовать информацию о типе из другого файла, который я только что создал. Пока я не закрою и не открою их (в редакторе), intellisense не всегда работает.

Надеюсь, это будет исправлено по мере развития приложения.

Если у вас есть рабочее пространство и по какой-то причине несколько папок, вам может потребоваться немного «помочь» omnisharp. Изначально у меня был большой проект, и в дальнейшем я добавил для него решение - в итоге осталось ДВЕ папки рабочего пространства (одна для запускаемого проекта, а другая - для решения). После создания этой настройки я испытал только первый проект, в котором работает intellisense.

Чтобы заставить работать intellisense, нужно было убедиться, что omnisharp выходит из решения, а не из проекта:

  1. Ctrl + Shift + p
  2. Напишите «OmniSharp: Select Project» и нажмите Enter.
  3. Выберите запись в рабочей области решения.

Очистка кеша машинописного текста и понижение версии машинописного текста до 3.3 решили проблему для меня.

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

Введите следующую команду в терминале в соответствии с вашей ОС и удалите все, что находится внутри.

Установите этот конкретный @typescript@3.3 , используя следующую команду.

IntelliSense — это вспомогательное средство для написания кода, включающее несколько возможностей: "Список членов", "Сведения о параметрах", "Краткие сведения" и "Завершить слово". Эти возможности помогают получать дополнительные сведения об используемом коде, отслеживать параметры при вводе и добавлять вызовы свойств и методов путем нескольких нажатий клавиш.

Многие аспекты IntelliSense зависят от конкретного языка. Дополнительные сведения об IntelliSense для различных языков приведены в разделах, перечисленных в подразделе См. также.

Список членов

После ввода символа триггера (например, точки ( . ) в управляемом коде или :: в C++) появляется список допустимых членов типа (или пространства имен). Если продолжить вводить символы, список фильтруется таким образом, чтобы включать только члены, начинающиеся этими символами, или члены, у которых любое слово в имени начинается этими символами. IntelliSense также выполняет сопоставление "верблюжьего" стиля, поэтому вы можете просто ввести первую букву каждого слова с "верблюжьим" стилем в имени члена, чтобы просмотреть список совпадений.

После выбора элемента, его можно вставить в код, нажав клавишу TAB или введя пробел. При выделении элемента и вводе точки элемент отображается с конечной точкой, которая вызывает еще один список членов. При выделении элемента (но до того, как он будет вставлен) отображаются краткие сведения по элементу.

В списке членов значок слева указывает на тип члена, такой как пространство имен, класс, функция или переменная. Список значков см. в разделе Значки представления классов и обозревателя объектов. Список может быть достаточно длинным; перемещаться вверх и вниз по списку можно с помощью клавиш PAGE UP и PAGE DOWN.

Список элементов Visual Studio

Функцию Список членов можно вызывать вручную, нажав клавиши CTRL+J, выбрав пункт Edit > IntelliSense > Список членов или нажав кнопку Список членов на панели инструментов редактора. При вызове в пустой строке или за пределами распознаваемой области в списке отображаются символы глобального пространства имен.

Чтобы отключить список членов по умолчанию (чтобы он не отображался без специального вызова), перейдите в раздел меню Сервис > Параметры > Все языки и снимите флажок Автоматически отображать список членов. Если требуется отключить список членов только для конкретного языка, перейдите к параметрам Общие для этого языка.

Можно также включить режим подсказки, в котором в код будет вставляться только печатаемый текст. Например, если ввести идентификатор, отсутствующий в списке, и нажать клавишу TAB, в режиме завершения введенный идентификатор был бы заменен записью из списка. Для переключения между режимом завершения и режимом подсказки нажмите CTRL+ALT+ПРОБЕЛ или выберите Изменить > IntelliSense > Переключить режим завершения.

Сведения о параметрах

Выделение параметра полужирным шрифтом указывает на следующий параметр, необходимый при вводе функции. Для перегруженных функций можно использовать клавиши СТРЕЛКА ВВЕРХ и СТРЕЛКА ВНИЗ для просмотра сведений об альтернативных параметрах для перегрузок функций.

Сведения о параметрах

При аннотировании функций и параметров при помощи комментариев XML-документации комментарии будут отображаться в качестве сведений о параметрах. Дополнительные сведения см. в разделе Создание XML-примечаний к коду.

Сведения о параметрах можно вызвать вручную, выбрав Изменить > IntelliSense > Сведения о параметрах, нажав клавиши CTRL+SHIFT+ПРОБЕЛ или кнопку Сведения о параметрах на панели инструментов редактора.

Краткие сведения

Функция "Краткие сведения" отображает полное объявление любого идентификатора в коде.

Краткие сведения о Visual Studio

При выборе члена в поле Список членов для него также отображаются краткие сведения.

Краткие сведения можно открыть вручную, выбрав пункт меню Изменить > IntelliSense > Краткие сведения или нажав клавиши CTRL+K, CTRL+I или кнопку Краткие сведения на панели инструментов редактора.

Если функция перегружена, IntelliSense может не отображать информацию для всех форм перегрузки.

Чтобы отключить краткие сведения для кода C++, можно перейти в меню Сервис > Параметры > Текстовый редактор > С/С++ > Дополнительно и задать для параметра Автоматические краткие сведения значение false .

Завершение слов

Функция "Завершить слово" завершает оставшуюся часть имени переменной, команды или функции после ввода достаточного количества символов для однозначного определения термина. Чтобы вызвать функцию "Завершить слово", можно выбрать пункт меню Изменить > IntelliSense > Завершить слово либо нажать клавиши CTRL+ПРОБЕЛ или кнопку Завершить слово на панели инструментов редактора.

Параметры IntelliSense

Параметры IntelliSense включены по умолчанию. Чтобы отключить их, выберите Сервис > Параметры > Текстовый редактор и снимите флажок Сведения о параметрах или Автоматически отображать список членов, если вам не нужна функция списка членов.

Значки IntelliSense

Значки в IntelliSense могут передавать дополнительные значения с помощью модификаторов значков. Это звезды, сердечки и замки, расположенные поверх значка объекта, которые означают защищенное, внутреннее или закрытое использование соответственно.

Устранение неполадок IntelliSense

В некоторых случаях параметры IntelliSense могут не работать должным образом.

Курсор находится под ошибкой кода. Если в коде над курсором имеется неполная функция или другая ошибка, функция IntelliSense может перестать работать, поскольку ей не удается проанализировать элементы кода. Для устранения этой проблемы можно отметить соответствующий код комментарием.

Курсор находится в комментарии к коду. Если курсор находится в комментарии в файле исходного кода, вы не сможете использовать IntelliSense.

Курсор находится в строковом литерале. Вы не сможете использовать IntelliSense, если курсор находится внутри кавычек, в которые заключен строковый литерал, как показано в следующем примере:

Автоматические параметры отключены. По умолчанию функция IntelliSense работает автоматически, но ее можно отключить. Вы можете вызывать функцию IntelliSense, даже если автоматическое завершение операторов отключено.

IntelliSense для одного файла

Когда вы открываете файл, который не включен в проект, Visual Studio предоставляет определенную поддержку IntelliSense, но по умолчанию ошибки не подчеркиваются волнистой линией. Если на панели навигации указано Прочие файлы, это может быть причиной того, что ошибочный код не подчеркивается волнистой линией или не определен макрос препроцессора.

Проверка списка ошибок

Если файл не открыт в режиме одного файла и функция IntelliSense работает неправильно, сначала нужно проверить окно "Список ошибок". Чтобы увидеть все ошибки IntelliSense в текущем исходном файле вместе со всеми включенными файлами заголовков, выберите в раскрывающемся списке Сборка и IntelliSense:

"Сборка и IntelliSense" в окне "Список ошибок"

В IntelliSense отображается не более 1000 ошибок. Если файлы заголовков, включенные в исходный файл, содержат более 1000 ошибок, в самом начале исходного файла отображается только один маркер ошибки в виде волнистой линии.

Проекты MSBuild

Включаемые каталоги VC++

Чтобы просмотреть текущие значения макросов сборки, например VC_IncludePath, выберите строку "Включаемые каталоги" и щелкните раскрывающийся список справа. Затем выберите <Edit> и нажмите кнопку Макросы.

Проекты, использующие файл makefile

Для проектов Makefile, которые основаны на шаблоне проектов NMake, выберите на левой панели NMake, а затем Путь поиска включаемых файлов в категории IntelliSense:

Пути включаемых файлов в проекте Makefile

Проекты в виде папок

Если в файле CppProperties.json есть синтаксическая ошибка, функция IntelliSense для затронутых файлов будет работать неправильно. В окне вывода Visual Studio будет отображаться ошибка.

Ошибки анализа тегов

Анализатор тегов — это анализатор кода C++ с нечеткой логикой, который используется для просмотра и навигации. Он работает очень быстро, но не пытается полностью интерпретировать каждую конструкции кода.

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

Есть два типичных проявления этой проблемы в Visual Studio:

Если на панели навигации отображается корневой макрос, значит, текущее определение функции пропущено:

Анализатор тегов пропускает определение функции

Интегрированная среда разработки предлагает создать определение для функции, которая уже определена:

Анализатор тегов предлагает определить существующую функцию

Чтобы устранить подобные проблемы, создайте файл с именем cpp.hint в корневом каталоге решения. Дополнительные сведения см. в статье Файлы подсказок.

Ошибки анализатора тегов отображаются в окне Список ошибок.

Проверка параметров проекта с помощью журнала ведения диагностики

Чтобы проверить, использует ли компилятор IntelliSense правильные параметры, например включаемые пути и макросы препроцессора, включите журнал ведения диагностики для командных строк IntelliSense в разделе Средства > Параметры > Текстовый редактор > C/C++ > Дополнительно > Запись данных диагностики. Установите следующие значения параметров: Включить ведение журнала — True, Уровень ведения журналов — 5 (самый подробный) и Фильтр ведения журналов — 8 (журнал IntelliSense).

В окне вывода теперь будут показаны командные строки, которые передаются в компилятор IntelliSense. Пример выходных данных:

Возможно, эти сведения помогут определить, почему IntelliSense выдает неточную информацию. Например, если включаемая папка вашего проекта содержит строку $(MyVariable)\Include, а в журнале диагностики в качестве включенного пути отображается /I\Include, значит, переменная $(MyVariable) не была вычислена и была удалена из окончательного включаемого пути.

Компиляция IntelliSense

Visual Studio использует выделенный компилятор C++ для создания и обслуживания базы данных, используемой для всех функций IntelliSense. Чтобы синхронизировать базу данных IntelliSense с кодом, после определенных изменений в параметрах проекта или в исходных файлах Visual Studio автоматически запускает в фоновом режиме задачи компиляции только для IntelliSense.

Но иногда Visual Studio может не обновлять базу данных IntelliSense своевременно. Например, после выполнения команды git pull или git checkout Visual Studio может потребоваться вплоть до часа для того, чтобы обнаружить изменения в файлах. Вы можете принудительно запустить повторное сканирование всех файлов решения. Для этого щелкните правой кнопкой мыши узел проекта в обозревателе решений и выберите Повторить сканирование решения.

Устранение ошибок компиляции IntelliSense

При компиляции IntelliSense не создаются двоичные файлы, но она также может завершиться с ошибкой. Одна из возможных причин ошибки — использование пользовательских файлов с расширениями .props или .targets. В Visual Studio 2017 версии 15.6 и более поздней ошибки сборки только для IntelliSense отображаются в окне вывода. Чтобы их увидеть, в раскрывающемся списке Показать выходные данные из выберите Решение:

Окно вывода для ошибок решения

Если присвоить переменной среды TRACEDESIGNTIME значение true и перезапустить Visual Studio, вы найдете в каталоге %TEMP% файл журнала, который может помочь при диагностике ошибки компиляции.

Дополнительные сведения о переменной среды TRACEDESIGNTIME см. в статьях о Roslyn и общей системе проектов. Сведения в этих статьях относятся и к проектам C++.

кто-нибудь видел такое поведение раньше? Есть ли у кого-нибудь другие предложения о том, как я могу заставить IntelliSense вернуться к тому, как все было раньше? Если нет, мне, возможно, придется сделать новую переустановку VS.

enter image description here

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

Открыть Инструменты > Параметры > Текстовый Редактор. Если у вас проблема только с одним языком, найдите этот язык; если это для всего, нажмите "все языки". Справа вверху будет несколько параметров с надписями "авто-члены списка", "скрыть расширенные члены"и" информация о параметрах". Убедитесь, что все они включены (хотя второй может быть отключен; если это так, не обращай внимания).

Я обнаружил, что иногда даже проверка настроек в разделе Параметры -- > завершение инструкции (ответ выше) не работает. В этом случае сохранение и перезапуск Visual Studio будет повторно включить Intellisense.

наконец, эта ссылка имеет список других способов устранения неполадок Intellisense с разбивкой по языкам (для более конкретных ошибок).

Я начну отмечать, что этого не произошло с тех пор, как я обновил свою ОЗУ. Я был в 4GB и часто имел бы несколько экземпляров VS open вместе с SSMS. С тех пор я перешел на 8GB, а затем 16GB.

вот шаги, которые я прохожу, когда я теряю intellisense.

если затрагивается только один файл/окно, закройте / откройте этот файл. Если это не сработает, попробуйте ниже.

В Visual Studio:

  1. Нажмите Инструменты- > Параметры - >Текст Редактор - >Все Языки- > Общие
  2. снимите флажок "авто список участников"
  3. снимите "параметры"
  4. проверьте " авто список членов "(да, тот, который вы только что сняли)
  5. Проверьте "информация о параметрах" (опять же, тот, который вы только что сняли)
  6. нажмите OK

Если это не сработает, вот еще несколько шагов, чтобы попробовать:

  1. закройте все документы VS и откройте
  2. если все еще нет рабочий, закрыть / повторно открыть решение
  3. если все еще не работает, перезапустите VS.

для проектов на C++:
MSDN имеет несколько вещей, чтобы попробовать:MSDN предложения

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

  1. закрыть решение.
  2. удалить .
  3. открыть решение. (Это создает новый .ncb файл.)

Читайте также: