Откуда Visual Studio получает данные IntelliSense и завершение пространства имен
-
11-09-2019 - |
Вопрос
Признаюсь... Я задаю этот вопрос, потому что у меня до сих пор нет ответа на него. мой другой вопрос и подумал, что прибегну к другому такту.
Может кто-нибудь объяснить мне, ГДЕ работают значения для intellisense и завершения пространства имен/класса/члена.Я подумал, что если я смогу углубиться в то, где и как он получает эти данные, я смогу попытаться переконфигурировать свой проект, чтобы он правильно разрешал мои пространства имен.
Сет
Решение
Пространство имен и информация Intellisense для CLR поступают из базы данных, скрытой внутри установки VS.
Информация о рабочем проекте сканируется и архивируется (думаю, в файл) при открытии проекта.Затем он периодически обновляет его по мере вашей работы.
Если вы хотите точный путь, я сомневаюсь, что Microsoft публикует эту информацию.
Посмотрев на ваш другой вопрос, я хотел добавить, что возможно (каким-то образом) заставить Visual Studio перестроить информацию индекса для данного проекта.От меня ускользает, как это сделать прямо сейчас.Вы пробовали это и получили ли вы те же результаты?
Обновление в отношении комментариев:
Обновление кэша легко, но не обязательно очевидно.Есть два способа обновить кеш:1) Перейти к редактированию -> Intellisense -> Обновить локальный кэш и 2) Нажмите Ctrl+Shift+R
Источник: Блог Дэна — Обновление кэша IntelliSense
Другие советы
Я не знаю, как это делается в Visual Studio, но вот общий подход:
Соберите все публичные члены и методы.В случае управляемых библиотек, подобных созданным VB.NET, это делается путем отражения.Документация взята из XML-файлов, связанных с этими библиотеками.Это подход для ссылочных библиотек.Для проекта, над которым вы сейчас работаете, он просто постоянно парсит исходные файлы, где документация объединена с кодом.
То, как выполняется разрешение пространства имен, зависит от языка, но ответ на этот вопрос вы найдете в другом вопросе.