简体   繁体   中英

VSCode C# "go to definition" (F12) not working

I'm using VSCode 1.19 and trying to "Go>Go to definition" in a C# file like in Visual Studio and it does nothing. In a.js file it works well and i'm guessing if there is some workaround this.

There may be multiple "projects" in the folder and VSCode has selected the "wrong" one. (in VSCode terms "project" means the sln file)

Use ctrl-shift-P and select "OmniSharp: Select Project" to select the correct project (a .sln file).

If you have the Output window open with "OmniSharp Logs" selected, you will see it reading your csproj's. Once finished your goto definition will start to work

As written in the comments for @AndyPook's answer, another possible solution is to just restart OmniSharp.

CTRL + SHIFT + P -> OmniSharp: Restart OmniSharp

"Go to definition" was working for me for a long time, but recently stopped working. My solution was:

  • Go to Extensions
  • Find the C# extension (version 1.25.0 in my case)
  • Click the cogwheel
  • Select "Install Another Version..."
  • Select one of the previous versions (version 1.24.4 fixed the problem for me)
  • Press "Reload Required" when the selected version has been installed

Fix: When multiple solutions in same folder

This answer is visual version of @AndyPook's answer.

1. Crtl + Shift + P

2. Search >OmniSharp 在此处输入图片说明 3. Choose option Select Project

4. It will show all the list of solutions in your folder. select the correct eg: 在此处输入图片说明

5. Verify it by looking into OmniSharp Logs

OmniSharp 日志

I had the same problem in VSCode (multiple projects Web API and Angular MVC) and resolved by creating a new sln file. Please do the following steps:

Step 1: Create the project sln file. ( ex: MyApp.sln )

Step 2: Open the sln file and paste this code:

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

Step 3: Crtl + Shift + P to switch on the project.

I resolved by

  1. check error on omnisharp log omnisharp log

OniSharp Error: Found dotnet version 5.0.201. Minimum required version is 6.0.100

  1. set "omnisharp.useModernNet": false on C# extension user/workspace

unchecked .net 6

  1. open source code folder and reload vscode

For anyone using the C# extension and coming here after May 24, 2022: version 1.25.0 of the extension disabled support for a few things

You can follow instructions at that link to get it working with 1.25.0, or you can rollback to version 1.24.4, per GeirS' answer

I had the same problem, but with a TypeScript project folder. The solution was to simply reopen the folder.

I know that I am late to this thread, but restarting omnisharp did not fix this problem for me. What did fix the problem was running 'dotnet restore' and opening the project folder again.

PLUGGIN VSCODE "ANgular Language Service"

  1. Desisntalar ANGULAR SERVICE
  2. volver a instalar ANGULAR SERVICE
  3. REINICIAR VISUAL-code

Try Using Shift+Fn+F12 if all required extension are installed depends on your system config

In my case, the answer by @Abdul Saboor sent me in the right direction. I checked the logs and it turns out the .NET 6 is required for this functionality.

I face same probleam today, try to move my self from Visual Studiod to Code, As My porject is Microservie based , i have multiple Solution and repos with respect to each microservice , for make CI/CD simple, Now where the VS code Feature of Multipel Root Work Space helping me, So please follow below step if you are Setting up VS Code from professional developement prospect as c# developer,

  • Install Node.js,
  • Install NPM.
  • Install .net Core
  • Install git.(it can be other scm as well )
  • Now Install VS Code,
  • Install OMNI Sharp C# extension, this will help you in debug as well provide intllisence and provide feature like Go To Defination feature(it have one limittation at time it can run only on one solution even you have multi root workspace, I think they keep it like that way to keep the thing light weight ,to switch between multiple solution in such case you have to use switch project option. 在此处输入图片说明 )
  • 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 to Check Git History.
  • Multiple Teriminal is also nice feature as i have to run to many services at development time.
  • You Can Setup launch.setting for each indivisual project required for debug(if donot want to do manually , first open each solution folder indivisually one by one, vsc help will create for you )
  • To create WorkSpace, no need to do harwork just Start adding your sln folder to workspace tab,
  • Crtl+shif+P : Workspace:open Configuration file you can setup compound launch setting as well after that, to open multiple sln in debug mode at same time, like below one: "launch": { "configurations": [

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

    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM