C# intellisense не работает в VS Code

Я использую код Visual Studio, и я уже загрузил плагин C# OMNISharp в свою систему, и он отлично работает в моем существующем проекте / решениях.

Однако я только что создал новое решение и новый проект в коде Visual Studio, и похоже, что для этого конкретного решения Intellisense или любые другие функции Omnisharp просто не работают. Я пробовал следующие вещи:

  • Перезапуск кода Visual Studio
  • Отключение и включение моего плагина OmniSharp

Кроме того, я заметил одну вещь: когда решение создается в Visual Studio, в нем много кода, который выглядит следующим образом:

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{AEA16303-6991-4FF1-A3A9-72D892D7968C}"
EndProject

По сути, это все ссылки на проекты. Однако, когда решение создается кодом Visual Studio, такого раздела не существует. Это решение работает и прекрасно компилируется, просто выглядит принципиально иначе, чем решение Visual Studio.

Однако, похоже, ничего не работает. Есть ли что-нибудь, что я могу попытаться заставить это работать? Есть идеи?

8 ответов

Решение

Как вы создали проект? Для правильной работы Intellisense проект должен иметь определенную структуру.

Предполагая, что у вас есть.net core sdk для mac и установлено расширение omnisharp:

Попробуйте следующее:

  1. Откройте встроенный терминал (View => Integrated Terminal)
  2. Создайте новый каталог для размещения тестового проекта, например "testproj", например => mkdir testproj

  3. используйте dotnet cli для инициализации проекта => dotnet new console

Посмотрим, есть ли у вас intellisense.
Также я бы порекомендовал посмотреть вводное видео ядра.net на Mac.

Это вызвано добавлением *.sln и *.csproj к вашей настройке "files.exclude".

Попробуй это:

Code -> Preferences -> Settings -> "omnisharp.useMono": true/false

Удалить из файла настроек.

Или сначала откройте свой проект с помощью MonoDevelop или Visual Studio 2015/2017, а затем снова откройте VS-код.

В VS Code v1.43.2 у меня сработало добавление следующей строки в настройки:

"omnisharp.useGlobalMono": "never"

Значение параметра "никогда" должно быть заключено в двойные кавычки, иначе оно будет отмечено красным. Даже с кавычками он остался желтым. Не уверен, почему, поскольку все остальные параметры / значения там синие. Я полагаю, это указывает на какое-то предупреждение, но это работает.

(Кстати, я хотел бы понять, что такое "глобально установленный моно". Однако меня интересовало только заставить работать IntelliSense, так что re: omnisharp я прошу вас "newb".)

Это сработало для меня

"omnisharp.useGlobalMono": "never"

Были ли ваши новое решение и проекты созданы в папке OneDrive в Windows 10? В последней версии Windows 10 плагин C# не может запускаться, когда проект находится в папке OneDrive с включенной функцией "File On-Demand". Пожалуйста, посмотрите на эту проблему на Github

В моем случае после установки расширения C # мне пришлось щелкнуть значок настройки на расширении, а затем щелкнуть «Добавить в записи рабочей области».

В моем случае проблема возникла из папки ресурсов моего проекта.

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

Решением было переименовать шаблон from .sln to .txt чтобы предотвратить его загрузку OmniSharp.

У меня была эта проблема в 2022 году, и ничего из вышеперечисленного не помогло мне. Для меня проблема была вызвана обновлением VS Code и плагина С# (в моем случае плагина С# до версии 1.25.0+), потому что в этой версии они сделали это:

Сборки .NET Framework OmniSharp больше не поставляются с инструментами Mono или MSBuild (см. объявление omnisharp-roslyn#2339). Чтобы гарантировать, что расширение C# > > останется пригодным для использования в проектах .NET SDK "из коробки", мы > изменили значение по умолчанию для omnisharp.useModernNet на true.
Если вам по-прежнему нужна поддержка Unity или .NET Framework, вы можете установить для > omnisharp.useModernNet значение false в настройках VS Code и перезапустить OmniSharp.

Таким образом, основная проблема заключалась в том, что для omnisharp.useModernNet по умолчанию установлено значение true, что делает весь плагин нефункциональным, но выполнение того, что они сказали, и установка omnisharp.useModernNet в false вручную в файле .vscode > settings.json решило эту проблему для меня!
Для получения дополнительной информации вы также можете прочитать полное официальное объявление о плагине VS Code C# в разделе «Сведения о плагинах» в VS Code или на этой веб-странице !

Другие вопросы по тегам