Intellisense не работает автоматически VSCode

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

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

"editor.quickSuggestions": true,
"editor.suggestOnTriggerCharacters": true,

Я получаю меню Intellisense, когда начинаю вводить текст и нажимаю "CTRL + Space", но это дает мне список всего, а не вещи специально для моего объекта.

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

Ответы

Ответ 1

В Visual Studio Code более сложные функции редактирования (IntelliSense, инструменты рефакторинга и т.д.) Работают только в файлах С#, если у вас есть файл project.json или *.sln о котором известно VSCode. Откройте папку (т.е. откройте меню "Файл" и нажмите "Открыть папку...") с файлом *.sln или project.json а VSCode попытается найти все файлы проекта/решения в папке. Если есть несколько проектов, вам может потребоваться выбрать один из кнопок проектов в правой части строки состояния (внизу окна).

На веб-сайте VSCode:

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

enter image description here

Ответ 2

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

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

Ответ 3

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

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

Starting OmniSharp server at 2017-9-18 09:26:44
    Target: /Users/{username}/Source/{Your Solution Folder}/{Your Solution
file}.sln

OmniSharp server started wth Mono
    Path: /Users/{username}/.vscode/extensions/ms-vscode.csharp-1.12.1/.omnisharp/run
    PID: 5808

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

[info]: OmniSharp.MSBuild.MSBuildProjectSystem
        Update project: {Your Project1 Name}
[info]: OmniSharp.MSBuild.MSBuildProjectSystem
        Update project: {Your Project2 Name} 
....

они означают, что ваши проекты получают признание от OmniSharp Extension.

Если вы получите сообщение об ошибке, информирующее вас о тайм-ауте, войдите в настройки кода Visual Studio и добавьте переопределение конфигурации, как показано ниже:

  "omnisharp.projectLoadTimeout": 200

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

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

Вот еще одна ссылка с тем же решением: https://github.com/OmniSharp/omnisharp-vscode/issues/1585

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

Ответ 4

Другая стратегия устранения неполадок, которую можно попробовать, если ничего из вышеперечисленного не сработало, - это удаление Mono, которое в любом случае не требуется, если вы используете .NET Core. Я также испытал внезапное исчезновение Intellisense после внесения изменений в одно из наших корпоративных репозиториев, которое включало в себя обновление с ASP.NET Core 2.0 до 2.1. Странно, но в то же время Intellisense работал нормально в другом репозитории С#, работающем под управлением ASP.NET Core 2.2.

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

После удаления Mono изменилась только одна деталь: как начинал Omnisharp. Теперь он загружается из сценария оболочки, расположенного по адресу ~/.vscode/extensions/ms-vscode.csharp-1.19.0/.omnisharp/1.32.18/run. Ранее Mono сам ~/.vscode/extensions/ms-vscode.csharp-1.19.0/.omnisharp/1.32.18/omnisharp/Omnisharp.exe сервер из исполняемого файла по адресу ~/.vscode/extensions/ms-vscode.csharp-1.19.0/.omnisharp/1.32.18/omnisharp/Omnisharp.exe.

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

  • dotnet clean/Удаление каталогов bin и obj
  • Обновление launch.json чтобы он указывал на правильный /bin/Debug/netcoreapp2.1
  • Вытирая мой локальный кеш Nuget
  • Перезапуск Omnisharp
  • Деинсталляция и переустановка VS Code, а также восстановление версии 1.33.1, поскольку поломка странным образом совпала с обновлением за март 2019 года.
  • Удаление и повторная установка расширения кода С# VS, а также восстановление версии 1.19.0 с учетом отчетов других пользователей о указанной версии, создающей помехи Intellisense для определенных проектов *
  • Добавление файла global.json в корневой каталог проекта для переопределения использования по умолчанию последней версии .NET Core SDK (у меня был 2.2.105) и запуска вместо этого с использованием 2.1.302 в сочетании с версией проекта
  • Стирание/перестройка файла проекта .sln

Спецификации: VS Code 1.33.1, расширение С# 1.19.0, MacOS High Sierra 10.13.6.


* NB. Как оказалось, в другом проекте .NET Core 2.1 с теми же проблемами в VS Code, как описано выше, удаление Mono само по себе не помогло. Мне также пришлось вернуться к расширению С# до версии 1.18.0, чтобы восстановить Intellisense. Weird.

Ответ 6

До сих пор у меня был хороший опыт в С# с этим расширением: https://marketplace.visualstudio.com/items?itemName=jchannon.csharpextensions

"Это расширение пересекает дерево папок, чтобы найти project.json или *.csproj и использует это как родительскую папку для определения пространств имен".

Ответ 7

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

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

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

Ответ 8

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

Ответ 9

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

Ответ 10

Если у вас есть рабочее пространство, и по какой-то причине у вас есть несколько папок, вам, возможно, придется немного "помочь" омнипарпу. Первоначально у меня был большой проект, и я добавил решение для него, в конечном итоге, с ДВУМЯ папками рабочей области (одна для запуска проекта и одна для решения). После написания этой настройки у меня был только первый проект, в котором работала Intellisense.

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

  1. Ctrl + Shift + P
  2. Выберите "OmniSharp: выберите проект"
  3. Выберите запись рабочей области решения.

Вдохновение, полученное от "лебедя":https://github.com/OmniSharp/omnisharp-vscode/issues/1889