VSCode C#"转到定义"(F12)无效

Hie*_*ula 11 c# visual-studio-code vscode-settings

我正在使用VSCode 1.19并尝试在.cs文件中"Go> Go to definition",就像在Visual Studio中一样,它什么也没做.在.js文件中,它运行良好,我猜测是否有一些解决方法.

And*_*ook 22

文件夹中可能有多个"项目",VSCode选择了"错误"项目.

使用ctrl-shift-P并选择"OmniSharp:选择项目"以选择正确的项目(.sln文件).

如果选择"OmniSharp Logs"打开"输出"窗口,您将看到它正在读取您的csproj.完成后,您的goto定义将开始起作用

  • 您可以重新启动OmniSharp服务器,以强制其重新加载解决方案和所有项目。Ctrl + Shift + P并选择“ OmniSharp:重新启动OmniSharp” [https://github.com/Microsoft/vscode/issues/3707](https://github.com/Microsoft/vscode/issues/3707) (3认同)
  • 这对我有用!我选择的项目是同一工作区文件夹中的另一个 .sln。 (2认同)
  • 在这种情况下,“项目”表示sln。如果您的根目录中有多个,则可以选择“错误的”根目录来加载csproj。在这种情况下,仅重新启动omni并没有帮助,因为它将再次选择错误的sln。您必须告诉它以哪个sln开始。 (2认同)

Yng*_*sen 15

正如@AndyPook 回答的评论中所写,另一种可能的解决方案是重新启动 OmniSharp。

CTRL+ SHIFT+ P->OmniSharp: Restart OmniSharp


Gei*_*irS 13

“转到定义”对我来说已经工作了很长一段时间,但最近停止工作了。我的解决方案是:

  • 转到扩展
  • 找到 C# 扩展(在我的例子中是版本 1.25.0)
  • 单击齿轮
  • 选择“安装另一个版本...”
  • 选择以前的版本之一(版本 1.24.4 为我解决了这个问题)
  • 安装所选版本后按“需要重新加载”

编辑:最好遵循凯尔·查利斯的建议!

  • 谢谢你!显然这是设计使然:https://github.com/OmniSharp/omnisharp-vscode/issues/5245 https://github.com/OmniSharp/omnisharp-vscode/issues/5120 (3认同)

Abd*_*oor 6

修复:当同一文件夹中有多个解决方案时

这个答案是@AndyPook 答案的可视化版本。

1. Crtl + Shift+P

2.搜索>OmniSharp在此处输入图片说明 3. 选择选项Select Project

4.它将显示您文件夹中的所有解决方案列表。选择正确的例如:在此处输入图片说明

5.通过查看 OmniSharp 日志来验证它

OmniSharp 日志


Kyl*_*lis 5

对于使用 C# 扩展并在 2022 年 5 月 24 日之后来到这里的任何人:扩展的 1.25.0 版本禁用了对某些功能的支持

您可以按照该链接中的说明操作,使其与 1.25.0 一起使用,或者根据GeirS 的回答,您可以回滚到版本 1.24.4


Moh*_*hit -1

我今天面临同样的问题,尝试将自己从 Visual Studiod 转移到 Code,因为我的项目是基于微服务的,我对每个微服务都有多个解决方案和存储库,为了使 CI/CD 变得简单,现在 VS 代码功能多根工作空间对我有帮助,因此,如果您作为 C# 开发人员从专业开发前景设置 VS Code,请按照以下步骤操作,

  • 安装 Node.js,
  • 安装 NPM。
  • 安装.net核心
  • 安装git。(也可以是其他scm)
  • 现在安装 VS Code,
  • 安装 OMNI Sharp C# 扩展,这将帮助您进行调试,并提供智能并提供诸如转到定义功能之类的功能(它有时有一个限制,即使您有多根工作空间,它也只能在一种解决方案上运行,我认为他们保留了它像这样保持轻量级,在多个解决方案之间切换,在这种情况下你必须使用切换项目选项。 在此输入图像描述
  • 我喜欢的另外两个好的扩展是
    • C# IDE(帮助您提供一些新的漂亮模板来创建类文件,Inferface 选项,我喜欢的是,当您创建构造函数和拉取参数时,显示建议仅通过 Ctrl+ 为它们创建字段或属性。)
    • Git 历史记录 查看 Git 历史记录。
  • 多终端也是一个不错的功能,因为我必须在开发时运行许多服务。
  • 您可以为调试所需的每个独立项目设置launch.setting(如果不想手动执行,请先逐一打开每个解决方案文件夹,vsc help将为您创建)
  • 要创建工作区,无需费力,只需开始将 sln 文件夹添加到工作区选项卡即可,
  • Crtl+shif+P : Workspace:open 配置文件之后,您还可以设置复合启动设置,以在调试模式下同时打开多个 sln,如下所示: "launch": { "configurations": [

    ],
    "compounds": [
        {
            "name": "Launch Server & Client",
            "configurations": [
              "CMSAPI",// Each indivisual sln launch setting unique name
              "Core"
            ]
        }
    
    ]
    
    Run Code Online (Sandbox Code Playgroud)

    }