VSCode С# перейти к определению (F12) не работает

Я использую VSCode 1.19 и пытаюсь перейти к определению в файле C #, как в Visual Studio, и ничего не делает. В файле .js он работает хорошо, и я предполагаю, что есть какой-то обходной путь.


person Hiero De Paula    schedule 27.12.2017    source источник
comment
Установлен ли OmniSharp?   -  person boop_the_snoot    schedule 27.12.2017
comment
Проверьте, есть ли у вас надлежащие права на C; водить машину. Также, если вы находитесь за прокси, вам нужно будет обойти его.   -  person boop_the_snoot    schedule 28.12.2017
comment
Я ничего не могу с этим поделать, так как не могу управлять правами или подключениями на своей рабочей станции, есть ли способ сделать это вручную?   -  person Hiero De Paula    schedule 28.12.2017
comment
Помимо прав, вы можете вручную обойти прокси, добавив "http.proxy": "http://username:password@ipaddress:port" в свои пользовательские настройки VSCode. Замените имя пользователя, пароль, IP-адрес и порт в соответствии с аутентификацией, которую вы предоставили для своей учетной записи. Если ваш пароль содержит @, добавьте имя пользователя@пароль в кавычки   -  person boop_the_snoot    schedule 28.12.2017


Ответы (7)


В папке может быть несколько «проектов», и VSCode выбрал «неправильный». (в терминах VSCode «проект» означает файл sln)

Используйте Ctrl-Shift-P и выберите «OmniSharp: Выберите проект», чтобы выбрать правильный проект (файл .sln).

Если у вас открыто окно «Вывод» с выбранным «OmniSharp Logs», вы увидите, что оно читает ваш файл csproj. После того, как вы закончите, ваше определение goto начнет работать.

person AndyPook    schedule 06.07.2018
comment
Это сработало для меня! Мой выбранный проект был другим .sln в той же папке рабочей области. - person Aaron Jordan; 02.08.2018
comment
Вы можете перезапустить сервер OmniSharp, чтобы принудительно перезагрузить решение и все проекты. Ctrl + Shift + P и выберите OmniSharp: перезапустите OmniSharp https://github.com/Microsoft/vscode/issues/3707 - person Naren; 04.02.2019
comment
проект в данном случае означает слн. Если у вас более одного в корне, он может выбрать неправильный для загрузки csproj. Простой перезапуск omni в этом случае не поможет, так как он просто снова выберет неправильный sln. Вы должны указать, с какого sln начинать. - person AndyPook; 04.02.2019
comment
Большое спасибо за это. У меня была эта проблема с использованием подмодулей (которые имеют файлы sln), которые я перезапустил, переустановил и даже не знал об этой функции. - person Mark McGookin; 02.04.2019
comment
Это сводило меня с ума! Спасибо! - person snapper; 24.05.2019

Как написано в комментариях к ответу @AndyPook, другое возможное решение — просто перезапустить OmniSharp.

CTRL + SHIFT + P -> OmniSharp: Restart OmniSharp

person Yngvar Kristiansen    schedule 26.09.2019

Исправлено: несколько решений в одной папке

Этот ответ является визуальной версией ответа @AndyPook.

1. Crtl+Shift+P

2. Поиск >OmniSharpвведите здесь описание изображения 3. Выберите вариант Select Project

4. Он покажет весь список решений в вашей папке. выберите правильный, например: введите здесь описание изображения

5. Проверьте это, просмотрев журналы OmniSharp.

Журналы OmniSharp

person Abdul Saboor    schedule 25.03.2020

У меня была такая же проблема в VSCode (несколько проектов Web API и Angular MVC), и она была решена путем создания нового файла sln. Пожалуйста, выполните следующие действия:

Шаг 1. Создайте файл проекта sln. ( пример: MyApp.sln )

Шаг 2. Откройте файл sln и вставьте этот код:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26124.0
MinimumVisualStudioVersion = 15.0.26124.0
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyApp", "MyApp\MyApp.csproj", "{BC407A9C-4BD2-4086-9862-6E5A547D1DD8}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Debug|x64 = Debug|x64
        Debug|x86 = Debug|x86
        Release|Any CPU = Release|Any CPU
        Release|x64 = Release|x64
        Release|x86 = Release|x86
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {BC407A9C-4BD2-4086-9862-6E5A547D1DD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {BC407A9C-4BD2-4086-9862-6E5A547D1DD8}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {BC407A9C-4BD2-4086-9862-6E5A547D1DD8}.Debug|x64.ActiveCfg = Debug|Any CPU
        {BC407A9C-4BD2-4086-9862-6E5A547D1DD8}.Debug|x64.Build.0 = Debug|Any CPU
        {BC407A9C-4BD2-4086-9862-6E5A547D1DD8}.Debug|x86.ActiveCfg = Debug|Any CPU
        {BC407A9C-4BD2-4086-9862-6E5A547D1DD8}.Debug|x86.Build.0 = Debug|Any CPU
        {BC407A9C-4BD2-4086-9862-6E5A547D1DD8}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {BC407A9C-4BD2-4086-9862-6E5A547D1DD8}.Release|Any CPU.Build.0 = Release|Any CPU
        {BC407A9C-4BD2-4086-9862-6E5A547D1DD8}.Release|x64.ActiveCfg = Release|Any CPU
        {BC407A9C-4BD2-4086-9862-6E5A547D1DD8}.Release|x64.Build.0 = Release|Any CPU
        {BC407A9C-4BD2-4086-9862-6E5A547D1DD8}.Release|x86.ActiveCfg = Release|Any CPU
        {BC407A9C-4BD2-4086-9862-6E5A547D1DD8}.Release|x86.Build.0 = Release|Any CPU
    EndGlobalSection
EndGlobal

Шаг 3: Crtl+Shift+P, чтобы включить проект.

person SriDD    schedule 29.02.2020

У меня была такая же проблема, но с папкой проекта TypeScript. Решение состояло в том, чтобы просто снова открыть папку.

person Krisztián Balla    schedule 07.08.2019

Я знаю, что опаздываю на эту тему, но перезапуск omnisharp не решил эту проблему для меня. Что действительно решило проблему, так это запуск «восстановления dotnet» и повторное открытие папки проекта.

person jawsofdoom    schedule 21.11.2019

Сегодня я сталкиваюсь с той же проблемой, пытаюсь переместить себя из Visual Studiod в код. Поскольку мой проект основан на микросервисе, у меня есть несколько решений и репозиториев по отношению к каждому микросервису, чтобы упростить CI / CD. Теперь, где функция кода VS Multipel Root Work Space помогает мне, поэтому, пожалуйста, следуйте шагу ниже, если вы настраиваете VS Code с точки зрения профессионального развития в качестве разработчика C #,

  • Установите Node.js,
  • Установите НПМ.
  • Установите .net ядро
  • Установите git (это может быть и другой scm)
  • Теперь установите VS Code,
  • Установите расширение OMNI Sharp C#, это поможет вам в отладке, а также обеспечит интеллигентность и предоставит такие функции, как функция перехода к определению (у нее есть одно ограничение, когда она может работать только в одном решении, даже если у вас есть рабочее пространство с несколькими корнями, я думаю, они сохранят его таким образом, чтобы сохранить легкий вес, чтобы переключаться между несколькими решениями, в таком случае вам нужно использовать опцию переключения проекта. nofollow noreferrer">введите здесь описание изображения )
  • two more good extension i like is
    • C# IDE(help you with few new nice template to create a Class File,Inferface option, the one i like is , when you create costructor and pull parameter show suggestion to create filed or proeperty for them just by Ctrl+.)
    • Git History, чтобы проверить историю Git.
  • Множественный терминал также является хорошей функцией, так как мне приходится запускать множество сервисов во время разработки.
  • Вы можете настроить launch.setting для каждого отдельного проекта, необходимого для отладки (если вы не хотите делать это вручную, сначала откройте каждую папку решения индивидуально одну за другой, vsc help создаст для вас)
  • Чтобы создать WorkSpace, не нужно ничего делать, просто начните добавлять папку sln на вкладку рабочей области,
  • Ctrl+shif+P : Рабочая область: открыть Файл конфигурации, после которого вы также можете настроить составной запуск, чтобы одновременно открывать несколько sln в режиме отладки, как показано ниже: «launch»: { «configurations»: [

    ],
    "compounds": [
        {
            "name": "Launch Server & Client",
            "configurations": [
              "CMSAPI",// Each indivisual sln launch setting unique name
              "Core"
            ]
        }
    
    ]
    

    }

person Mohit    schedule 28.04.2018