Перейти к содержимому

Как настроить подсказки в visual studio

  • автор:

Как включить подсказки в Visual Studio 2022?

vabka

stepuasha , понимаю. Без подсказок по конкретике твоего вопроса ответить на него также тяжело.

У студии много разновидностей подсказок. Подсказки меню, подсказки интерфейса, подсказки настроек проекта, подсказки управления и сборки проекта, контекстные подсказки, подсказки дополнения, подсказки размещения, подсказки использования. и так далее.

Каких тебе подсказок не хватает и что именно ты делаешь, прямо по пунктам, чтобы открыть код в среде?

stepuasha @stepuasha Автор вопроса

Василий Банников, студию качал не с официального сайта (т.к. 7 винда не поддерживается), проект создавался также как обычно, в главном меню нажал кнопку создать проект, выбрал язык C++, пустой проект.

Открываю тоже обычно, запускаю студию, выбираю проект и кликаю по нему, всё.

stepuasha @stepuasha Автор вопроса

Евгений Шатунов, ну начну с создания проекта:

1. Я открываю Visual Studio и нажимаю на кнопку «Создать проект», из шаблонов выбираю пустой проект. Создаю.

2. В обозревателе решений в папке с проектом создаю Обьект «Вайл C++ с расширением .cpp»

3. Но когда начинаю писать код, студия не предлагает варианты, т.е. я хочу написать «using» пишу «us» и хочу чтобы студия предложила мне дописать «ing» во всплывающем окошке. Но этого не происходит(

Как включить подсказки для Unity в Visual studio?

Так как в версии 18 года любимую MonoDevelop больше не поддерживают, придется пользоваться VS. Все будет ничего, но подсказок как в моно нет, вернее есть но команд юнити там нет (Time, touch, PlayerPrefs и все остальное), как их включить? В VS code тоже их нет

Отслеживать
задан 11 мая 2018 в 3:42
103 1 1 золотой знак 2 2 серебряных знака 7 7 бронзовых знаков
Хороший вопрос! Поддержу
11 мая 2018 в 3:50

Странно, у меня с установки, когда я пишу код с подключённым автоматом Unity неймспейсом UnityEngine, все подсказки отображаются.

11 мая 2018 в 4:08

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Всё до банальности просто, достаточно установить расширения для Visual Studio для этого прожмите:

  1. Средства -> Расширения и обновления.(Tools -> Extentions and Updates..)
  2. В появившемся окне вбить в поисковике Unity.
  3. Установить расширение. (Visual Studio 2017 Tools for Unity) Но по идее без него должно было всё работать, вроде бы.

Отслеживать
ответ дан 11 мая 2018 в 5:38
521 2 2 серебряных знака 8 8 бронзовых знаков

В Unity надо открыть: Edit -> Preferences, вкладка External Tools, в External Script Editor выбирать: Visual Studio 2017 Community.

Отслеживать
51.6k 201 201 золотой знак 63 63 серебряных знака 245 245 бронзовых знаков
ответ дан 11 мая 2020 в 20:57
41 1 1 бронзовый знак

Была такая же проблема при использовании VSCode в юнити 2019.2.11f, т.е. не отображались контекстные подсказки при вводе для классов, методов и т.д.

Как решил: 1) Делаем все в точности как описано в официальном мануале по интеграции VSCode с Unity https://code.visualstudio.com/docs/other/unity

2) Если все сделали по мануалу, у вас должен быть установлен VSCode с плагинами C# и Debugger for Unity, при этом в юнити в Edit\Preferences\External tools у вас выставлен VSCode(с установленными параметрами ProjectPath, File, Line, Column) как редактор скриптов и установлен флажок Editor Attaching. Далее, открываем любой скрипт из юнити — он должен открыться в VSCode и в окне Explorer-а должна отображаться вся структура вашего проекта( а не только файл открытого скрипта).

3)Плагин C# внутри VSCode должен выдать предупреждение в лог (консоль можно открыть в самом нижнем поле редактора VSCode слева внизу два значка — ошибка и предупреждение), что файл проекта подгружен некорректно из-за отсутствия необходимого пакета .Net Framework какой-либо версии (в моем случае это была версия 4.7.1, в вашем случае может быть другая)! Устанавливаем требуемый пакет .NET Framework с оф. сайта майкрософта (https://dotnet.microsoft.com/download/dotnet-framework) или откуда угодно, ДАЖЕ ЕСЛИ УСТАНОВЛЕНА БОЛЕЕ ПОЗДНЯЯ ВЕРСИЯ (это никак не повредит ей).

После установки .Net Framework закройте на всякий случай Unity(если изменяли состояние флажка Editor attaching) и VSCode. Откройте юнити заново и откройте любой скрипт. В этот раз при открытии файла плагин C# в VSCode больше не должен выдавать ошибок загрузки проекта и контекстные подсказки будут работать.

P.S. дополнение VSCode integration для Unity из Asset Store можно не устанавливать, т.к. если все сделано правильно, то все работает и без него.

Пошаговое руководство. Отображение подсказок QuickInfo

Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

QuickInfo — это функция IntelliSense, которая отображает сигнатуры и описания методов при перемещении указателя на имя метода. Вы можете реализовать такие функции на основе языка, как QuickInfo, определив идентификаторы, для которых требуется предоставить описания QuickInfo, а затем создав подсказку, в которой будет отображаться содержимое. Вы можете определить QuickInfo в контексте языковой службы или определить собственное расширение имени файла и тип контента и отобразить QuickInfo только для этого типа или отобразить QuickInfo для существующего типа контента (например, «текст»). В этом пошаговом руководстве показано, как отобразить QuickInfo для типа контента «text».

В примере QuickInfo в этом пошаговом руководстве отображаются подсказки при перемещении указателя на имя метода. Для реализации этих четырех интерфейсов требуется:

  • исходный интерфейс
  • интерфейс поставщика источника
  • интерфейс контроллера
  • интерфейс поставщика контроллера Поставщики исходных и контроллеров являются компонентами компонента Managed Extensibility Framework (MEF), и отвечают за экспорт классов источника и контроллера и импорта служб и брокеров, таких как ITextBufferFactoryService, который создает текстовый буфер подсказки и IQuickInfoBroker, который активирует сеанс QuickInfo. В этом примере источник QuickInfo использует жестко закодированный список имен и описаний методов, но в полных реализациях языковая служба и документация по языку отвечают за предоставление этого содержимого.

Создание проекта MEF

Создание проекта MEF

  1. Создайте проект VSIX на C#. (В Диалоговое окно «Новый проект» , выберите Visual C# / Расширяемость, а затем ПРОЕКТ VSIX.) Назовите решение QuickInfoTest .
  2. Добавьте в проект шаблон элемента классификатора редактора. Дополнительные сведения: Создание расширения с помощью шаблона элемента редактора.
  3. Удалите файлы существующих классов.

Реализация источника QuickInfo

Источник QuickInfo отвечает за сбор набора идентификаторов и их описания и добавление содержимого в текстовый буфер подсказки при обнаружении одного из идентификаторов. В этом примере идентификаторы и их описания просто добавляются в исходный конструктор.

Реализация источника QuickInfo
  1. Добавьте файл класса с именем TestQuickInfoSource .
  2. Добавьте ссылку на Microsoft.VisualStudio.Language.IntelliSense.
  3. Добавьте приведенные ниже импортированные данные.
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel.Composition; using Microsoft.VisualStudio.Language.Intellisense; using Microsoft.VisualStudio.Text; using Microsoft.VisualStudio.Text.Editor; using Microsoft.VisualStudio.Text.Operations; using Microsoft.VisualStudio.Text.Tagging; using Microsoft.VisualStudio.Utilities; 
Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Text Imports System.Collections.ObjectModel Imports System.ComponentModel.Composition Imports Microsoft.VisualStudio.Language.Intellisense Imports Microsoft.VisualStudio.Text Imports Microsoft.VisualStudio.Text.Editor Imports Microsoft.VisualStudio.Text.Operations Imports Microsoft.VisualStudio.Text.Tagging Imports Microsoft.VisualStudio.Utilities 
internal class TestQuickInfoSource : IQuickInfoSource 
Friend Class TestQuickInfoSource Implements IQuickInfoSource 
private TestQuickInfoSourceProvider m_provider; private ITextBuffer m_subjectBuffer; private Dictionary m_dictionary; 
Private m_provider As TestQuickInfoSourceProvider Private m_subjectBuffer As ITextBuffer Private m_dictionary As Dictionary(Of String, String) 
public TestQuickInfoSource(TestQuickInfoSourceProvider provider, ITextBuffer subjectBuffer) < m_provider = provider; m_subjectBuffer = subjectBuffer; //these are the method names and their descriptions m_dictionary = new Dictionary(); m_dictionary.Add("add", "int add(int firstInt, int secondInt)\nAdds one integer to another."); m_dictionary.Add("subtract", "int subtract(int firstInt, int secondInt)\nSubtracts one integer from another."); m_dictionary.Add("multiply", "int multiply(int firstInt, int secondInt)\nMultiplies one integer by another."); m_dictionary.Add("divide", "int divide(int firstInt, int secondInt)\nDivides one integer by another."); > 
Public Sub New(ByVal provider As TestQuickInfoSourceProvider, ByVal subjectBuffer As ITextBuffer) m_provider = provider m_subjectBuffer = subjectBuffer 'these are the method names and their descriptions m_dictionary = New Dictionary(Of String, String)() m_dictionary.Add("add", "int add(int firstInt, int secondInt)" & vbLf & "Adds one integer to another.") m_dictionary.Add("subtract", "int subtract(int firstInt, int secondInt)" & vbLf & "Subtracts one integer from another.") m_dictionary.Add("multiply", "int multiply(int firstInt, int secondInt)" & vbLf & "Multiplies one integer by another.") m_dictionary.Add("divide", "int divide(int firstInt, int secondInt)" & vbLf & "Divides one integer by another.") End Sub 
public void AugmentQuickInfoSession(IQuickInfoSession session, IList qiContent, out ITrackingSpan applicableToSpan) < // Map the trigger point down to our buffer. SnapshotPoint? subjectTriggerPoint = session.GetTriggerPoint(m_subjectBuffer.CurrentSnapshot); if (!subjectTriggerPoint.HasValue) < applicableToSpan = null; return; >ITextSnapshot currentSnapshot = subjectTriggerPoint.Value.Snapshot; SnapshotSpan querySpan = new SnapshotSpan(subjectTriggerPoint.Value, 0); //look for occurrences of our QuickInfo words in the span ITextStructureNavigator navigator = m_provider.NavigatorService.GetTextStructureNavigator(m_subjectBuffer); TextExtent extent = navigator.GetExtentOfWord(subjectTriggerPoint.Value); string searchText = extent.Span.GetText(); foreach (string key in m_dictionary.Keys) < int foundIndex = searchText.IndexOf(key, StringComparison.CurrentCultureIgnoreCase); if (foundIndex >-1) < applicableToSpan = currentSnapshot.CreateTrackingSpan ( //querySpan.Start.Add(foundIndex).Position, 9, SpanTrackingMode.EdgeInclusive extent.Span.Start + foundIndex, key.Length, SpanTrackingMode.EdgeInclusive ); string value; m_dictionary.TryGetValue(key, out value); if (value != null) qiContent.Add(value); else qiContent.Add(""); return; >> applicableToSpan = null; > 
Public Sub AugmentQuickInfoSession(ByVal session As IQuickInfoSession, ByVal qiContent As IList(Of Object), ByRef applicableToSpan As ITrackingSpan) Implements IQuickInfoSource.AugmentQuickInfoSession ' Map the trigger point down to our buffer. Dim subjectTriggerPoint As System.Nullable(Of SnapshotPoint) = session.GetTriggerPoint(m_subjectBuffer.CurrentSnapshot) If Not subjectTriggerPoint.HasValue Then applicableToSpan = Nothing Exit Sub End If Dim currentSnapshot As ITextSnapshot = subjectTriggerPoint.Value.Snapshot Dim querySpan As New SnapshotSpan(subjectTriggerPoint.Value, 0) 'look for occurrences of our QuickInfo words in the span Dim navigator As ITextStructureNavigator = m_provider.NavigatorService.GetTextStructureNavigator(m_subjectBuffer) Dim extent As TextExtent = navigator.GetExtentOfWord(subjectTriggerPoint.Value) Dim searchText As String = extent.Span.GetText() For Each key As String In m_dictionary.Keys Dim foundIndex As Integer = searchText.IndexOf(key, StringComparison.CurrentCultureIgnoreCase) If foundIndex > -1 Then 'applicableToSpan = currentSnapshot.CreateTrackingSpan(querySpan.Start.Add(foundIndex).Position, 9, SpanTrackingMode.EdgeInclusive) applicableToSpan = currentSnapshot.CreateTrackingSpan(extent.Span.Start + foundIndex, key.Length, SpanTrackingMode.EdgeInclusive) Dim value As String = "" m_dictionary.TryGetValue(key, value) If value IsNot Nothing Then qiContent.Add(value) Else qiContent.Add("") End If Exit Sub End If Next applicableToSpan = Nothing End Sub 
private bool m_isDisposed; public void Dispose() < if (!m_isDisposed) < GC.SuppressFinalize(this); m_isDisposed = true; >> 
Private m_isDisposed As Boolean Public Sub Dispose() Implements IDisposable.Dispose If Not m_isDisposed Then GC.SuppressFinalize(Me) m_isDisposed = True End If End Sub 

Реализация поставщика источника QuickInfo

Поставщик источника QuickInfo служит в первую очередь для экспорта в качестве части компонента MEF и создания экземпляра источника QuickInfo. Так как это часть компонента MEF, она может импортировать другие компоненты MEF.

Реализация поставщика источника QuickInfo
  1. Объявите поставщик источника QuickInfo с именем TestQuickInfoSourceProvider , который реализует IQuickInfoSourceProviderи экспортирует его с NameAttribute помощью источника ToolTip QuickInfo, параметра OrderAttribute Before=»default» и ContentTypeAttribute «text».
[Export(typeof(IQuickInfoSourceProvider))] [Name("ToolTip QuickInfo Source")] [Order(Before = "Default Quick Info Presenter")] [ContentType("text")] internal class TestQuickInfoSourceProvider : IQuickInfoSourceProvider 
 _ _ _ _ Friend Class TestQuickInfoSourceProvider Implements IQuickInfoSourceProvider 
[Import] internal ITextStructureNavigatorSelectorService NavigatorService < get; set; >[Import] internal ITextBufferFactoryService TextBufferFactoryService
Private _NavigatorService As ITextStructureNavigatorSelectorService _ Friend Property NavigatorService() As ITextStructureNavigatorSelectorService Get Return _NavigatorService End Get Set(ByVal value As ITextStructureNavigatorSelectorService) _NavigatorService = value End Set End Property Private _TextBufferFactoryService As ITextBufferFactoryService _ Friend Property TextBufferFactoryService() As ITextBufferFactoryService Get Return _TextBufferFactoryService End Get Set(ByVal value As ITextBufferFactoryService) _TextBufferFactoryService = value End Set End Property 
public IQuickInfoSource TryCreateQuickInfoSource(ITextBuffer textBuffer)
Public Function TryCreateQuickInfoSource(ByVal textBuffer As ITextBuffer) As IQuickInfoSource Implements IQuickInfoSourceProvider.TryCreateQuickInfoSource Return New TestQuickInfoSource(Me, textBuffer) End Function 

Реализация контроллера QuickInfo

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

Реализация контроллера QuickInfo

  1. Объявите класс, реализующий IIntellisenseControllerи назовите его TestQuickInfoController .
internal class TestQuickInfoController : IIntellisenseController 
Friend Class TestQuickInfoController Implements IIntellisenseController 
private ITextView m_textView; private IList m_subjectBuffers; private TestQuickInfoControllerProvider m_provider; private IQuickInfoSession m_session; 
Private m_textView As ITextView Private m_subjectBuffers As IList(Of ITextBuffer) Private m_provider As TestQuickInfoControllerProvider Private m_session As IQuickInfoSession 
internal TestQuickInfoController(ITextView textView, IList subjectBuffers, TestQuickInfoControllerProvider provider)
Friend Sub New(ByVal textView As ITextView, ByVal subjectBuffers As IList(Of ITextBuffer), ByVal provider As TestQuickInfoControllerProvider) m_textView = textView m_subjectBuffers = subjectBuffers m_provider = provider AddHandler m_textView.MouseHover, AddressOf Me.OnTextViewMouseHover End Sub 
private void OnTextViewMouseHover(object sender, MouseHoverEventArgs e) < //find the mouse position by mapping down to the subject buffer SnapshotPoint? point = m_textView.BufferGraph.MapDownToFirstMatch (new SnapshotPoint(m_textView.TextSnapshot, e.Position), PointTrackingMode.Positive, snapshot =>m_subjectBuffers.Contains(snapshot.TextBuffer), PositionAffinity.Predecessor); if (point != null) < ITrackingPoint triggerPoint = point.Value.Snapshot.CreateTrackingPoint(point.Value.Position, PointTrackingMode.Positive); if (!m_provider.QuickInfoBroker.IsQuickInfoActive(m_textView)) < m_session = m_provider.QuickInfoBroker.TriggerQuickInfo(m_textView, triggerPoint, true); >> > 
Private Sub OnTextViewMouseHover(ByVal sender As Object, ByVal e As MouseHoverEventArgs) 'find the mouse position by mapping down to the subject buffer Dim point As System.Nullable(Of SnapshotPoint) = m_textView.BufferGraph.MapDownToFirstMatch(New SnapshotPoint(m_textView.TextSnapshot, e.Position), PointTrackingMode.Positive, Function(snapshot) m_subjectBuffers.Contains(snapshot.TextBuffer), PositionAffinity.Predecessor) If point IsNot Nothing Then Dim triggerPoint As ITrackingPoint = point.Value.Snapshot.CreateTrackingPoint(point.Value.Position, PointTrackingMode.Positive) If Not m_provider.QuickInfoBroker.IsQuickInfoActive(m_textView) Then m_session = m_provider.QuickInfoBroker.TriggerQuickInfo(m_textView, triggerPoint, True) End If End If End Sub 
public void Detach(ITextView textView) < if (m_textView == textView) < m_textView.MouseHover -= this.OnTextViewMouseHover; m_textView = null; >> 
Public Sub Detach(ByVal textView As ITextView) Implements IIntellisenseController.Detach If m_textView Is textView Then AddHandler m_textView.MouseHover, AddressOf Me.OnTextViewMouseHover m_textView = Nothing End If End Sub 
public void ConnectSubjectBuffer(ITextBuffer subjectBuffer) < >public void DisconnectSubjectBuffer(ITextBuffer subjectBuffer)
Public Sub ConnectSubjectBuffer(ByVal subjectBuffer As ITextBuffer) Implements IIntellisenseController.ConnectSubjectBuffer End Sub Public Sub DisconnectSubjectBuffer(ByVal subjectBuffer As ITextBuffer) Implements IIntellisenseController.DisconnectSubjectBuffer End Sub 

Реализация поставщика контроллера QuickInfo

Поставщик контроллера QuickInfo служит главным образом для экспорта в качестве части компонента MEF и создания экземпляра контроллера QuickInfo. Так как это часть компонента MEF, она может импортировать другие компоненты MEF.

Реализация поставщика контроллера QuickInfo

  1. Объявите класс с именем TestQuickInfoControllerProvider , реализующий IIntellisenseControllerProviderи экспортируйте его с NameAttribute помощью контроллера QuickInfo ToolTip и ContentTypeAttribute текстового элемента:
[Export(typeof(IIntellisenseControllerProvider))] [Name("ToolTip QuickInfo Controller")] [ContentType("text")] internal class TestQuickInfoControllerProvider : IIntellisenseControllerProvider 
 _ _ _ Friend Class TestQuickInfoControllerProvider Implements IIntellisenseControllerProvider 
[Import] internal IQuickInfoBroker QuickInfoBroker
Private _QuickInfoBroker As IQuickInfoBroker _ Friend Property QuickInfoBroker() As IQuickInfoBroker Get Return _QuickInfoBroker End Get Set(ByVal value As IQuickInfoBroker) _QuickInfoBroker = value End Set End Property 
public IIntellisenseController TryCreateIntellisenseController(ITextView textView, IList subjectBuffers)
Public Function TryCreateIntellisenseController(ByVal textView As ITextView, ByVal subjectBuffers As IList(Of ITextBuffer)) As IIntellisenseController Implements IIntellisenseControllerProvider.TryCreateIntellisenseController Return New TestQuickInfoController(textView, subjectBuffers, Me) End Function 

Сборка и проверка кода

Чтобы протестировать этот код, создайте решение QuickInfoTest и запустите его в экспериментальном экземпляре.

Создание и тестирование решения QuickInfoTest

  1. Постройте решение.
  2. При запуске этого проекта в отладчике запускается второй экземпляр Visual Studio.
  3. Создайте текстовый файл и введите текст, включающий слова «добавить» и «вычитать».
  4. Переместите указатель на один из вхождения «add». Подпись и описание add метода должны отображаться.

Связанный контент

IntelliSense в Visual Studio

Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

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

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

Список участников

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

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

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

Visual Studio Member List

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

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

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

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

Функция «Сведения о параметрах» предоставляет сведения о числе параметров, необходимых методу, параметру атрибута универсального типа (в C#) или шаблону (в C++), а также об именах и типах таких параметров.

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

Parameter Info

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

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

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

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

Visual Studio Quick Info

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

Parameter Info in a C# code file

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

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

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

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

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

Параметры IntelliSense

Параметры IntelliSense включены по умолчанию. Чтобы отключить их, перейдите к разделу «Параметры >>текста» в текстовом редакторе>«Все языки» и отмените выбор сведений о параметрах или автоматических элементов списка, если вы не хотите использовать функцию «Элементы списка».

Если вы хотите изменить внешний вид элементов пользовательского интерфейса в Visual Studio, перейдите в раздел » >Параметры>параметров среды>» и «Цвета». Дополнительные сведения об этих параметрах и взаимодействии с ними см . в диалоговом окне «Шрифты и цвета», «Среда», «Параметры».

Значки IntelliSense

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

Icon Специальные возможности Description
Public Icon Modifier Открытый класс Неограниченный доступ.
Protected Icon Modifier Защищенный класс Доступ ограничен содержащим классом или типами, которые являются производными от содержащего класса.
Protected Internal Icon Modifier Защищенный внутренний класс Доступ ограничен текущей сборкой или типами, которые являются производными от содержащего класса.
Internal Icon Modifier Внутренний класс Доступ ограничен текущей сборкой.
Private Icon Modifier Закрытый класс Доступ ограничен содержащим классом или типами, которые являются производными от содержащего класса в текущей сборке. (Доступно с версии C# 7.2.)

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

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

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

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

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

MessageBox( hWnd, "String literal|") 

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

Связанный контент

  • C# IntelliSense
  • Visual Basic IntelliSense
  • IntelliSense для JavaScript
  • Написание и рефакторинг кода (C++)
  • Создание XML-примечаний к коду

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *