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 попытается загрузить их все.
Ответ 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.
Ответ 5
Попробуйте установить расширение из команды Pallete - возможно, если С# intellisense не существует:
https://code.visualstudio.com/docs/customization/colorizer
Ответ 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 ушел от решения вместо проекта:
- Ctrl + Shift + P
- Выберите "OmniSharp: выберите проект"
- Выберите запись рабочей области решения.
Вдохновение, полученное от "лебедя":https://github.com/OmniSharp/omnisharp-vscode/issues/1889