Как включить intellisense в visual studio 2019
I just downloaded Visual Studio Code and my Intellisense is not automatically working.
The two settings that control this seem to be set correctly:
I do get an Intellisense menu when i start typing and press "CTRL + Space", but this gives me a list of everything and not things specifically for my object.
What am i doing wrong?
I have the same issue like you but in python. ^space ends up showing a giant list, completely unrelated to the code I'm trying to get suggestions from. How did you solve it?
30 Answers 30
- Selecting a project.json -file is opening a DNX-project and VSCode will load that project plus the referenced projects
- Selecting a *.sln -file is opening a MSBuild-project. It will load the referenced *.csproj -projects and sibling or descendant project.json -files but no other project files that are referenced from the solution file.
- Selecting a folder will make VSCode scan for *.sln and project.json files and VSCode will attempt to load them all.
I am opening a folder just like the video shows, but IntelliSense is not working on either Windows or Mac. I have many .sln files, but no project.json files.
Make sure you explicitly add the project to the sln using 'dotnet sln add'. If you have projects in the dir but not sln they will not work with IntelliSense.
How can I create project.json file ? I do not see neither project.json not *.sln file in solution directory.
If you have a workspace and for some reason have multiple folders you may need to 'help' omnisharp a bit. I initially had a big project and added a solution for it further on - ending up with TWO workspace folders (one to a startup project and one to the solution). After composing that setup I experienced only the first project to have intellisense working.
Solution to get intellisense working was to make sure omnisharp worked its way from the solution instead of the project:
- Ctrl + Shift + p
- Write "OmniSharp: Select Project" and press Enter.
- Choose the solution workspace entry.
Process by written
Process by image
As of the 0.5 version I have found that I need to close and re-open my working files to get some new intellisense information to start working for my own files. This usually happens after I have a file open that needs to use type information from another file I just created. Until I close and re-open them (within the editor) the intellisense doesn't always work.
Hopefully this is something that'll get fixed as the app matures.
Thanks @Mojtaba! the green flame icon is OmniSharp but didn't have a *.sln filename next to it until I did Command palette > OmniSharp: Select Project , because I had renamed my project's folder and it was using the oldfilename.sln, so I selected newname.sln, which fixes it so that typing Debug. shows Log as a tooltip intellisense now
Inorder to make the intelligence working, the Visual Studio Code extension OmniSharp should be there along with Mono. When you open a project/solution folder, the OmniSharp gets the project dependencies from either project.json or from the dotnet solution file (if the project/solution created with other versions of visual studio).
So, when you look at the omnisharp's output window after immediately opening the project/ solution folder, you may see the following lines
post that, you may see couple of lines coming up like below,
they mean that your projects are getting recognised by OmniSharp Extension.
If you get any error message informing you about timeout, please get into the settings of the Visual Studio Code, and add a configuration override like the one below:
I know it is too long to wait for 200 seconds. But don't worry, this won't stop you anymore working with project files. But, remember that the IntelliSense will be automatically available once all the projects in the folder are successfully loaded.
Feel free to extend the Timeout setting since it will help you getting intellisense even-though you are not getting it immediately.
Hope my information helps you! Enjoy your VSCode!
This case was for an existing project that was working fine before. Opened via the vs code "recent" history.
For dotnet core. I opened my project's *.csprog file, made no changes, and saved it via the vs code editor.
As soon as I saved, all of the intellisense stuff starting working again in my other files within that project.
For the project in question, I was puzzled to see successful logs for each reboot of the Omnisharp server as well as perfectly clean builds and runs. The puzzlement increased as I compared these Omnisharp logs to those from the 2.2 project and found them effectively identical.
Upon uninstalling Mono, the one detail that changed is how Omnisharp started. Now it boots up from a shell script located at ~/.vscode/extensions/ms-vscode.csharp-1.19.0/.omnisharp/1.32.18/run . Previously, Mono itself was booting the server from the executable at ~/.vscode/extensions/ms-vscode.csharp-1.19.0/.omnisharp/1.32.18/omnisharp/Omnisharp.exe .
Other troubleshooting I attempted in this instance though to no avail:
IntelliSense is a general term for various code editing features including: code completion, parameter info, quick info, and member lists. IntelliSense features are sometimes called by other names such as "code completion", "content assist", and "code hinting."
IntelliSense for your programming language
Visual Studio Code IntelliSense is provided for JavaScript, TypeScript, JSON, HTML, CSS, SCSS, and Less out of the box. VS Code supports word based completions for any programming language but can also be configured to have richer IntelliSense by installing a language extension.
Below are the most popular language extensions in the Marketplace. Select an extension tile below to read the description and reviews to decide which extension is best for you.
IntelliSense features
VS Code IntelliSense features are powered by a language service. A language service provides intelligent code completions based on language semantics and an analysis of your source code. If a language service knows possible completions, the IntelliSense suggestions will pop up as you type. If you continue typing characters, the list of members (variables, methods, etc.) is filtered to only include members containing your typed characters. Pressing Tab or Enter will insert the selected member.
You can trigger IntelliSense in any editor window by typing ⌃Space (Windows, Linux Ctrl+Space ) or by typing a trigger character (such as the dot character ( . ) in JavaScript).
Tip: The suggestions widget supports CamelCase filtering, meaning you can type the letters which are upper cased in a method name to limit the suggestions. For example, "cra" will quickly bring up "createApplication".
If you prefer, you can turn off IntelliSense while you type. See Customizing IntelliSense below to learn how to disable or customize VS Code's IntelliSense features.
As provided by the language service, you can see quick info for each method by either pressing ⌃Space (Windows, Linux Ctrl+Space ) or clicking the info icon. The accompanying documentation for the method will now expand to the side. The expanded documentation will stay so and will update as you navigate the list. You can close this by pressing ⌃Space (Windows, Linux Ctrl+Space ) again or by clicking on the close icon.
After choosing a method you are provided with parameter info.
When applicable, a language service will surface the underlying types in the quick info and method signatures. In the image above, you can see several any types. Because JavaScript is dynamic and doesn't need or enforce types, any suggests that the variable can be of any type.
Types of completions
The JavaScript code below illustrates IntelliSense completions. IntelliSense gives both inferred proposals and the global identifiers of the project. The inferred symbols are presented first, followed by the global identifiers (shown by the Word icon).
VS Code IntelliSense offers different types of completions, including language server suggestions, snippets, and simple word based textual completions.
Methods and Functions | method , function , constructor |
Variables | variable |
Fields | field |
Type parameters | typeParameter |
Constants | constant |
Classes | class |
Interfaces | interface |
Structures | struct |
Events | event |
Operators | operator |
Modules | module |
Properties and Attributes | property |
Values and Enumerations | value , enum |
References | reference |
Keywords | keyword |
Files | file |
Folders | folder |
Colors | color |
Unit | unit |
Snippet prefixes | snippet |
Words | text |
Customizing IntelliSense
You can customize your IntelliSense experience in settings and key bindings.
Settings
The settings shown below are the default settings. You can change these settings in your settings.json file as described in User and Workspace Settings.
Tab Completion
The editor supports "tab completion" which inserts the best matching completion when pressing Tab . This works regardless of the suggest widget showing or not. Also, pressing Tab after inserting a suggestions will insert the next best suggestion.
By default, tab completion is disabled. Use the editor.tabCompletion setting to enable it. These values exist:
- off - (default) Tab completion is disabled.
- on - Tab completion is enabled for all suggestions and repeated invocations insert the next best suggestion.
- onlySnippets - Tab completion only inserts static snippets which prefix match the current line prefix.
Locality Bonus
Sorting of suggestions depends on extension information and on how well they match the current word you are typing. In addition, you can ask the editor to boost suggestions that appear closer to the cursor position, using the editor.suggest.localityBonus setting.
In above images you can see that count , context , and colocated are sorted based on the scopes in which they appear (loop, function, file).
Suggestion selection
By default, VS Code pre-selects the previously used suggestion in the suggestion list. This is very useful as you can quickly insert the same completion multiple times. If you'd like different behavior, for example, always select the top item in the suggestion list, you can use the editor.suggestSelection setting.
- first - (default) Always select the top list item.
- recentlyUsed - The previously used item is selected unless a prefix (type to select) selects a different item.
- recentlyUsedByPrefix - Select items based on previous prefixes that have completed those suggestions.
"Type to select" means that the current prefix (roughly the text left of the cursor) is used to filter and sort suggestions. When this happens and when its result differs from the result of recentlyUsed it will be given precedence.
When using the last option, recentlyUsedByPrefix , VS Code remembers which item was selected for a specific prefix (partial text). For example, if you typed co and then selected console , the next time you typed co , the suggestion console would be pre-selected. This lets you quickly map various prefixes to different suggestions, for example co -> console and con -> const .
Snippets in suggestions
By default, VS Code shows snippets and completion proposals in one widget. You can control the behavior with the editor.snippetSuggestions setting. To remove snippets from the suggestions widget, set the value to "none" . If you'd like to see snippets, you can specify the order relative to suggestions; at the top ( "top" ), at the bottom ( "bottom" ), or inline ordered alphabetically ( "inline" ). The default is "inline" .
Key bindings
The key bindings shown below are the default key bindings. You can change these in your keybindings.json file as described in Key Bindings.
Note: There are many more key bindings relating to IntelliSense. Open the Default Keyboard Shortcuts (File > Preferences > Keyboard Shortcuts) and search for "suggest".
Troubleshooting
If you find IntelliSense has stopped working, the language service may not be running. Try restarting VS Code and this should solve the issue. If you are still missing IntelliSense features after installing a language extension, open an issue in the repository of the language extension.
Tip: For configuring and troubleshooting JavaScript IntelliSense, see the JavaScript documentation.
A particular language extension may not support all the VS Code IntelliSense features. Review the extension's README to find out what is supported. If you think there are issues with a language extension, you can usually find the issue repository for an extension through the VS Code Marketplace. Navigate to the extension's Details page and select the Support link.
Next steps
-
- Get the most out of your JavaScript development, including configuring IntelliSense. - See an example of IntelliSense in action in the Node.js walkthrough. - Learn how to set up debugging for your application. - Learn how to create extensions that add IntelliSense for new programming languages.
Common questions
Why am I not getting any suggestions?
This can be caused by a variety of reasons. First, try restarting VS Code. If the problem persists, consult the language extension's documentation. For JavaScript specific troubleshooting, please see the JavaScript language topic.
Why am I not seeing method and variable suggestions?
This issue is caused by missing type declaration (typings) files in JavaScript. You can check if a type declaration file package is available for a specific library by using the TypeSearch site. There is more information about this issue in the JavaScript language topic. For other languages, please consult the extension's documentation.
Система Visual Studio устанавливает много настроек средств IntelliSense по умолчанию, но многие из них можно изменить с помощью диалогового окна Options, если их значения, заданные по умолчанию, не устраивают разработчика. Некоторые из этих настроек связаны только с определенным языком программирования.
Общие настройки
Сначала рассмотрим настройки из группы Keyboard в разделе Environment. Каждой команде, доступной в системе Visual Studio, соответствует вполне определенная запись в списке комбинаций клавиш (на рисунке ниже показано диалоговое окно Options, которое открывается по команде Tools --> Options):
Комбинации клавиш, заданные по умолчанию, можно заменить или добавить новые. Комбинации клавиш для команд системы IntelliSense приведены в таблице ниже:
Выводит на экран информацию команды Quick Info о выбранном элементе
Пытается дополнить слово, если существует однозначное соответствие, или выводит список, если есть несколько совпадений
Переключает систему IntelliSense из режима подсказки в режим дополнения
Выводит на экран информацию о списке параметров вызываемой функции
Открывает диалоговое окно Code Snippet, в котором можно выбрать фрагмент кода, чтобы вставить его автоматически (создание и использование сниппетов мы рассмотрим позже)
Генерирует полную заглушку метода по шаблону
Генерирует определения абстрактного класса из заглушки
Генерирует явную реализацию интерфейса для определения класса
Генерирует неявную реализацию интерфейса для определения класса
Используя способы, описанные в статье "Горячие клавиши в Visual Studio", можно добавить новые комбинации клавиш или изменить существующие для любой команды.
Дополнение инструкции
Работой системы IntelliSense можно управлять либо в глобальном масштабе, как показано на рисунке ниже, либо для каждого языка программирования в отдельности. Для того чтобы определить способ вывода списка членов классов или вообще отменить его вывод, на закладке General в группе All Languages диалогового окна Options можно изменить настройки Statement Completion:
Во-первых, можно отключить список дополнений, чтобы они не появлялись автоматически. Некоторые разработчики предпочитают делать именно так, потому что списки членов классов мешают им набирать тексты своих программ. Если список дополнений выводится не автоматически, а только по вызову, то пользователь может сам решить, что включать в эти списки, помимо стандартных записей, включая ключевые слова и фрагменты кода.
Дополнительные возможности системы IntelliSense
Кроме основных аспектов технологии IntelliSense, в системе Visual Studio 2013 реализованы также дополнительные функциональные возможности интегрированной среды разработки, которые тоже относятся к этой технологии. Эти свойства подробно обсуждаются позже, а в этой статье приводится лишь их краткое описание.
Сниппеты
Сниппеты (code snippets) - это фрагменты кода, которые можно автоматически генерировать и вставлять в свой собственный код вместе с соответствующими ссылками и директивами using, помечая переменные фразы, чтобы облегчить их замену. Для того чтобы открыть диалоговое окно Code Snippets, следует нажать клавиши , .
В поисках требуемого сниппета можно перемещаться по иерархии каталогов сниппетов. Если разработчик знает комбинацию клавиш, установленную для конкретного сниппета, он может просто нажать ее и клавишу , и система Visual Studio вставит сниппет, не открывая диалоговое окно. Мощь сниппетов будет продемонстрирована в одной из следующих статей.
Комментарии XML
Комментарии XML используются как способ автоматического документирования проектов и решений. Еще одним преимуществом использования XML-комментариев в своем коде является то, что система Visual Studio может использовать их в своей системе IntelliSense для вывода подсказок и более полной информации о параметрах, помимо простой информации о типах, как это делается в обычных пользовательских классах. Мы приведем примеры использования комментариев XML в одной из следующих статей.
Добавление собственных схем IntelliSense
Пользователь может добавить собственные схемы IntelliSense, которые бывают полезными для редактирования XML- и HTML-файлов. Для этого следует создать правильно отформатированный XML-файл и инсталлировать его в подкаталог Common7\Packages\schemas\xml каталога инсталляции системы Visual Studio (по умолчанию C:\Program Files\Microsoft Visual Studio ). Например, можно расширить возможности технологии IntelliSense для XML-редактора, включив свою собственную схему определений. Описание процесса создания таких схем, выходит за рамки нашего руководства, но о нем можно прочитать в статье "Функции IntelliSense редактора XML".
Итак, в этой и предыдущих статьях мы рассмотрели систему IntelliSense. Функциональные возможности технологии IntelliSense выходят за пределы основного окна редактирования кода. Мощь технологии IntelliSense, проявляющаяся в автоматическом дополнении инструкций и параметров, можно использовать во многих других инструментальных окнах, например Command и Immediate. Любые ключевые слова и даже переменные и объекты, известные в текущем контексте на протяжении сессии отладки, могут быть найдены с помощью списка членов классов IntelliSense. Технология IntelliSense во всех ее проявлениях значительно повышает эффективность работы системы Visual Studio по сравнению с большинством других доступных инструментов. Постоянно отслеживания нажатия клавиш, чтобы обеспечить обратную визуальную связь или автоматическое дополнение и генерацию кода, система IntelliSense позволяет разработчикам исключительно быстро, эффективно и правильно набирать программы с первой попытки.
В этой статье описываются многочисленные способы применения технологии IntelliSense, помогающие разработчикам писать программы. К ним относятся обнаружение и исправление синтаксических ошибок, использование контекста и автоматическое дополнение имен переменных.
- это общее название автоматизированной справочной системы и технологии, лежащей в основе приложений, созданных с помощью инструментов компании Microsoft. Наиболее широко известным аспектом технологии IntelliSense является подчеркивание волнистой линией слов с орфографическими ошибками в текстовом редакторе Microsoft Word, а также небольшие визуальные индикаторы в листах электронной таблицы Microsoft Excel, информирующие пользователя о том что содержание конкретной ячейки не соответствует ожидаемому.
Даже эти простые индикаторы позволяют быстро выполнять соответствующие действия. Например, если щелкнуть правой кнопкой на слове, подчеркнутом красной волнистой линией в текстовом редакторе Word, отобразится список предлагаемых альтернатив. Другие приложения имеют аналогичные возможности.
В системе Visual Studio уже довольно давно были реализованы аналогичные возможности. Фактически простейшие функции технологии IntelliSense были реализованы уже в среде разработки Visual Basic 6. С каждым новым выпуском системы Visual Studio компания Microsoft совершенствовала технологию IntelliSense, делая ее все более контекстно-чувствительной и внедряя ее более широко, чтобы разработчик всегда мог легко получить необходимую информацию.
В системе Visual Studio 2013 название IntelliSense относится к большому количеству функций, начиная с визуальной реакции на неправильный код и интеллектуальных дескрипторов для проектирования форм до комбинаций клавиш, нажатие которых приводит к вставке целых фрагментов кода. Эти свойства, вместе взятые, обеспечивают разработчику более глубокое понимание происходящего, более высокую эффективность его работы и позволяют ему контролировать свою программу. Некоторые из этих возможностей для системы Visual Studio 2013 являются новыми. К ним относятся, например, режим подсказок (suggestion mode) и генерация кода в зависимости от его использования (Generate From Usage). Эти возможности предназначены для поддержки альтернативного стиля разработки, получившего название разработка через тестирование (test-driven development - TDD).
Основы технологии IntelliSense
Изменить цвет линии подчеркивания можно с помощью группы переключателей Fonts and Colors в окне Options.
Оставив курсор мыши над неправильным фрагментом кода, разработчик увидит подсказку, объясняющую проблему. В данном примере курсор находится над типом данных, поэтому разработчик увидит подсказку «The type or namespace name 'Customer' could not be found».
Система Visual Studio имеет возможность обнаруживать такие ошибки, потому что она непрерывно осуществляет предварительную компиляцию кода, который вводится разработчиком, и ищет все, что может привести к ошибкам компиляции. Если бы разработчик добавил класс Customer в свой проект, то система Visual Studio автоматически обработала бы это действие и удалила бы маркер, поставленный средствами IntelliSense.
Для вызова интеллектуального дескриптора IntelliSense во всех приложениях компании Microsoft используется комбинация клавиш , но в системе Visual Studio 2013 предложена более удобная комбинация .
Технология интеллектуальных дескрипторов, применяемая в системе Visual Studio, предназначена не только для редактирования кода. По существу, система Visual Studio 2013 позволяет применять интеллектуальные дескрипторы и к визуальным элементам управления, когда разработчик редактирует форму или элемент управления в окне Design view.
Когда разработчик выбирает команду, имеющую интеллектуальный дескриптор, в правом верхнем углу элемента управления появляется маленький треугольник. Для того чтобы открыть список Tasks для интеллектуального дескриптора, необходимо щелкнуть на этой кнопке. Комбинации клавиш, вызывающие интеллектуальный дескриптор, применяются и для визуальных элементов управления.
Дополнение слова и фраз
Мощь технологии IntelliSense в системе Visual Studio 2013 становится очевидной сразу, как только пользователь начинает набирать код. По мере набора текста на экране открываются разнообразные списки, помогающие выбрать правильные типы членов класса, функций и их параметров, тем самым уменьшая количество потенциальных ошибок компиляции еще до того, как разработчик закончит набирать текст программы. Ознакомившись с функционированием инструментов IntelliSense, легко заметить, что существует возможность значительно сократить объем кода, который требуется набрать на самом деле. Это особенно важно для пользователей, работающих на таких многословных языках, как Visual Basic.
Несмотря на полезность списка IntelliSense, учитывающего вводимые программистом буквы, этот инструмент является "обоюдоострым". Довольно часто разработчикам приходится искать переменную или член класса, не зная их полное имя. В этом случае можно ввести первые несколько букв наугад, а затем просмотреть список в поисках правильного варианта. Очевидно, что этот прием не сработает, если введенные буквы уже исключили правильный вариант. Для того чтобы увидеть полный список вариантов, нажмите клавишу , пока список IntelliSense открыт.
Если вы точно знаете, что ищете; введите первую букву каждого слова в верхнем регистре. Например, если набрать System.Console.OSI, то подсистема IntelliSense найдет слово OpenStandardInput.
Если информация, выдаваемая средствами IntelliSense, мешает увидеть другие строки программы или пользователь хочет просто скрыть список, достаточно нажать клавишу . В качестве альтернативы, если требуется лишь увидеть строки программы, скрытые за списком IntelliSense, не закрывая его полностью, можно нажать и удерживать клавишу . В этом случае список IntelliSense станет полупрозрачным и позволит увидеть скрытый под ним код:
Список IntelliSense предназначен не только для удовлетворения информационных потребностей. Разработчик может выбрать элемент этого списка, и система Visual Studio вставит его полный текст в окно редактора кода. Выбрать элемент в списке можно разными способами. Например, можно дважды щелкнуть мышью на требуемом элементе; можно также использовать клавиши с изображениями стрелок для выбора разных элементов, а затем нажать клавишу или , чтобы вставить в программу текст; и наконец, когда элемент в списке подсвечен, он автоматически будет выбран, если пользователь введет символ фиксации (commit character). Символами фиксации называют символы, которые не допускаются в именах членов классов. Примерами таких символов являются круглые и фигурные скобки, математические символы и двоеточие.
Список членов классов
Поскольку технология IntelliSense разрабатывается уже давно, большинство разработчиков знакомы со списком членов классов, который появляется при наборе имен, завершающихся точкой. Это значит, что программист собирается сослаться на член класса и система Visual Studio автоматически выводит список членов классов, доступных для данного объекта:
При первом открытии списка членов класса, доступных для данного объекта, система Visual Studio выводит список в алфавитном порядке, оставляя видимой его верхнюю часть. Однако, если этот список уже использовался ранее, система подсвечивает последний член, к которому обращался разработчик, чтобы ускорить выполнение повторяющихся действий.
На рисунке выше продемонстрирован также еще один полезный аспект списка членов классов для программистов, работающих на языке Visual Basic. Корешки закладок Common и All (в нижней части списка членов класса) позволяют увидеть либо совместно используемые члены классов, либо их полный список. Фильтровать список свойств, методов и событий по свойствам доступа можно только для языка Visual Basic.
Режим подсказок
По умолчанию, когда система Visual Studio 2013 выводит на экран список членов IntelliSense, можно выбрать только один элемент списка. По мере ввода последующих символов подсветка перемещается на элемент, который лучше остальных соответствует набранным символам. Если нажать клавиши или или набрать один из символов фиксации (например, открывающую скобку), то выделенный в данный момент элемент списка будет вставлен в окно редактора кода. Это поведение, предусмотренное по умолчанию, называется режимом дополнения (completion mode).
Как правило, режим дополнения обеспечивает ожидаемое функционирование системы и позволяет сэкономить много усилий, связанных с набором текста, но в некоторых случаях могут возникнуть проблемы. Один из них возникает при разработке через тестирование, когда пользователь часто ссылается на члены классов, которые еще не были определены. Это вынуждает систему IntelliSense выбирать члены классов, не устраивающие программиста, и вставлять нежелательный текст.
Для того чтобы этого избежать, компания Microsoft в интегрированной среде разработки Visual Studio 2010 предложила новый режим функционирования системы IntelliSense, который называется режимом подсказок (suggestion mode). Когда система IntelliSense работает в режиме подсказок, один из членов классов в списке находится в фокусе, но не выбирается по умолчанию. По мере набора текста система IntelliSense перемещает фокус на элемент, наиболее точно соответствующий набранным символам, но не вставляет его автоматически. Вместо этого набранные символы вставляются в начало списка IntelliSense, и если пользователь введет один из символов фиксации или нажмет клавишу или , то в окно редактора будет вставлена точно набранная строка.
Элементы списка IntelliSense можно по-прежнему выбирать с помощью навигационных клавиш или клавиши .
На рисунке ниже приведен пример задачи, для решения которой предназначен режим подсказок. В левой части рисунка программист набирает текст для нового метода Load из класса CustomerData. Класс CustomerData еще не содержит метода Load, но в нем уже есть класс LoadAll. Справа, показано, что программист набрал имя Load, за которым следует открывающая круглая скобка. Система IntelliSense неправильно предположила, что разработчик подразумевал метод LoadAll, и вставила его в окно редактора.
Для того чтобы избежать этого, можно включить режим подсказок, нажав клавиши . Теперь, когда программист наберет имя Load, оно появится в начале списка IntelliSense. Набрав открывающую круглую скобку, разработчик получит метод Load, что и требовалось:
Система IntelliSense останется в режиме подсказок, пока пользователь не нажмет комбинацию клавиш , тем самым включив режим дополнения.
Stub Completion
Кроме автоматического дополнения слов и фраз, система IntelliSense может также работать в режиме заглушки. Это свойство можно увидеть в среде разработки Visual Basic, когда программист создает функцию, вставляя ее объявление и нажимая клавишу . Среда Visual Studio автоматически переформатирует строку, добавляя соответствующее ключевое слово ByVal для параметров, которые не были явно определены своим контекстом, и строку End Function, завершающую код функции. Другой пример можно увидеть при редактировании XML-документа. Когда программист набирает открывающий дескриптор (open tag) нового элемента, система Visual Studio автоматически добавляет закрывающий дескриптор для него.
Добавляем в начало определения класса строку:
Поскольку мы набираем интерфейс IEnumerable, система Visual Studio сначала добавляет красную волнистую линию в конце фрагмента, чтобы показать, что в определении класса нет фигурных скобок, а затем добавляет индикатор интеллектуального дескриптора перед именем интерфейса:
Устанавливаем курсор мыши на индикатор интеллектуального дескриптора. Когда появится пиктограмма, щелкаем на ней, чтобы открыть меню доступных команд, как показано на рисунке ниже:
Интерфейс, который получится в результате, показан на рисунке ниже:
Обработчики событий также можно автоматически сгенерировать с помощью системы Visual Studio, (например, myBase.OnClick+=), система Visual Studio выполняет автоматическое дополнение, которое можно подтвердить, нажав клавишу .
Свойство Generate From Usage
Для того чтобы понять, как это свойство можно использовать на практике, рассмотрим этапы создания очень простого класса Customer с помощью некоего клиентского кода, использующего этот класс, а затем генерирующего его в зависимости от способа использования:
Оба раза, когда имя Customer встречается в тексте программы, оно подчеркивается красной волнистой линией. Щелкаем правой кнопкой на одном из них и выбираем команду Generate Class. Она создает новый класс Customer в нашем проекте. Открываем файл Customer.cs и видим пустое объявление класса. Система Visual Studio выяснит, что FirstName, LastName, FullName и Save не являются членами класса.
Для каждого не существующего в классе свойства щелкаем правой кнопкой на его имени и выбираем команду Generated Property. Снова открываем файл Customer.cs и видим, что система Visual Studio способна сама создать его реализацию.
То же самое можно повторить для метода Save, щелкнув на его имени правой кнопкой и выбрав команду Generated Method Stub.
Несмотря на то что сгенерированные свойства и классы можно использовать сразу, заглушки методов создаются так, чтобы они генерировали исключение NotImplementedException.
Если неопределенный код, который разработчик пытается сгенерировать, является типом, то можно выбрать команду Generate Class или Generate New Type. Если выбрать команду Generate New Type, то откроется диалоговое окно Generate New Туре:
Оно предоставляет пользователю много возможностей для конфигурации нового типа, включая выбор его разновидности: класс, перечисление, интерфейс или структура; уровень доступа: открытый (public), закрытый (private) или внутренний (internal), а также его местонахождение.
Информация о параметрах
В старых версиях инструментов разработки программ, выпущенных компанией Microsoft, например в системе Visual Basic 6, как только пользователь создавал вызов Функции, при наборе параметров система IntelliSense сразу выводила на экран информацию о них. К счастью, это невероятно полезное свойство по-прежнему доступно в системе Visual Studio 2013.
Старый способ представления информации о параметрах имел один недостаток: информация появлялась только тогда, когда разработчик действительно модифицировал вызов функции. Следовательно, он мог увидеть полезную подсказку только при создании вызова функции или при его изменении, но не при обычном просмотре кода.
Система Visual Studio 2013 исключила такой риск ошибок, предоставив команду, которая выводит информацию на экран, не требуя модификации кода. Нажав комбинацию клавиш , можно вывести на экран информацию о вызове функции, как показано на рисунке ниже. Кроме того, можно получить доступ к этой информации, выбрав команду Edit --> IntelliSense --> Parameter Info.
Команда Quick Info
Иногда программист хочет видеть информацию об объекте или интерфейсе, не модифицируя его код. Нажав комбинацию клавиш , , можно увидеть короткую подсказку, объясняющую предназначение объекта и способ его объявления:
Эту подсказку можно увидеть также, выбрав команду Edit --> IntelliSense --> Quick.
I have noticed a weird issue with Visual Studio 2019 v16.0.1 the IntelliSense about "Using directive is unnecessary" normally grey is missing and type reference suggestion for missing using is not working.
I also tried with Visual Studio 2019 Preview but no luck.
I have tried the following:
- deleted .vs folder and restarted.
- Reinstalled Visual Studio
- Reset settings via import and export setting under tools
Any other suggestions will be appreciated.
mine works, I am using a preview. latest, which project are you trying to create? as in which template have you create? WPF or Win FOrms, or net core??
Try updating to latest version to check if it helps. And if this issue occurs in simple console app or class library. If it only occurs in specific project type, share more details(project type, framework,nuget package. ) so that we can check for you:)
14 Answers 14
- Close Visual Studio
- Delete .vs folder (it is a hidden folder inside the folder which contains the solution *.sln)
- Start Visual Studio
Solved my problem
Update From the comments
Deleting Browse.VC.db file within .vs folder worked for me.
I did this to avoid deleting .suo which has information I want to preserve
NOTE 1: I am using Visual Studio 2019, but it may work on other versions
NOTE 2: This did not solve the OP problem, but it is a good candidate to solve your
@MorioBoncz 1. are you sure that you are showing the hidden folders because by default it is the hidden folder? 2. Make sure to build the project at least one time using VS 3.You are using VS not VS code :)
Deleting Browse.VC.db within .vs worked for me. I did this to avoid deleting .suo which has information I want to preserve and is in the .vs folder.
Downvoting this, removing the .vs folder broke the connection with TFS source control and it was not easy to add the solution back to source control.
Go to Tools -> Options -> Text Editor -> All Languages -> General. Make sure “Auto List Members” is checked. Also, make sure “Parameter Information” is checked.
Worked perfectly to me. For me those two options were marked as a square not as a V so I just made sure that it is marked as V for all languages.
If you are facing this issue with Unity projects then,
This will restart Visual Studio with your project.
In my case, Resharper is the culprit. Disabling it immediately solved the issue.
This, in fact, did help! Now the next step would be to figure out what exactly in ReSharper causes the problem and fix it.
I think these issues are discussed here and are resolved by an update and some worksrounds are bring discussed:
I use resharper (vs 2017) but had not installed it on 2019. After installing Resharper on 2019 the intellisense started working again. (yes, it was working in 2019, then stopped) I don't have an explanation on why this would fix it. Just did for me.
First time I use VS 2019, I need to manually install Code Analysis. Make sure it is installed at your project properties.
And today, for the new class, the suggestion or namespaces not showing for VS 2019 Intellisense, and Go to Definition not working too.
I must do close solution, and re-open and VS 2019 doing scanning while opening project, and then worked again.
I think this is bug for VS 2019. Try to close solution and re-open it.
I have tried almost all the solution mentioned above but it doesn't helped me. Trying to restart my PC solved my problem.
I tried lots of things but nothing worked for me until I found this post. He mentions a few things I have already tried that didn't work, but his final solution worked for me.
At the root of our solution there is a packages folder. I deleted the entire contents of this folder. Upon reopening Visual Studio, Intellisense and Go To Definition were restored to full working order.
close visual stdio For mac in your folder: do command + shift+ . you will see hidden files -> delete .vs folder open solution again
After working for a few months, Intellisense suddenly stopped. This cost me a lot of lost time! I've been worked with Visual Studio for about 10 years, and this problem happens occasionally in every version.
Here's what I tried for this iteration of the problem:
I thought I've finally solved the problem by following the advice from Homer. I deleted the packages folder at the base level of my project (somewhat nervously, as I wasn't sure if it was needed), and thought it had solved the problem, but no such luck.
However, one thing to watch out for - after doing this, Visual Studio recognised my classes but no longer recognised built-in ones (all the referenced namespaces at the top of my controllers were underlined in red). I then deleted the .vs folder (again), which seemed to solve the problem.
When I recompiled my solution, it gave a few CS0433 compilation errors with duplicate namespaces for the MinLength and MaxLength directives in some identity user name and password validation code. I got round this by removing the Microsoft.EntityFramework Nuget library (I had to also remove Microsoft.AspNet.Identity.EntityFramework too, since this depended on it), then adding them both back in, making sure to include at least version 6.2 of the former (otherwise I got another runtime error to do with the FirstOrDefaultAsync method called somewhere!).
My current situation: all existing Intellisense is working, but it's not recognising new classes I add unless I exit Visual Studio and go back in again. May have to live with this . unless anyone can help me?
Читайте также: