VSCode C#"转到定义" (F12)不工作

时间:2017-12-27 16:26:27

标签: c# visual-studio-code vscode-settings

我正在使用VSCode 1.19并试图" Go>转到定义"在.cs文件中,如在Visual Studio中,它什么都不做。在.js文件中,它运行良好,我猜测是否有一些解决方法。

7 个答案:

答案 0 :(得分:13)

文件夹中可能有多个“项目”,并且VSCode选择了“错误”的项目。 (在VSCode中,“项目”表示sln文件)

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

如果打开“输出”窗口并选择“ OmniSharp日志”,您将看到它读取了csproj。完成后,您的goto定义将开始起作用

答案 1 :(得分:2)

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

CTRL + SHIFT + P -> OmniSharp: Restart OmniSharp

答案 2 :(得分:1)

我知道我对这个线程很晚,但是重新启动omnisharp不能为我解决此问题。解决问题的方法是运行“ dotnet restore”并再次打开项目文件夹。

答案 3 :(得分:1)

我在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 打开项目。

答案 4 :(得分:1)

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

此答案是@AndyPook答案的直观版本。

1。 Crtl + Shift + P

2。。搜索>OmniSharp enter image description here 3。。选择选项Select Project

4。。它将显示文件夹中的所有解决方案列表。选择正确的例如:enter image description here

5。。通过查看OmniSharp日志进行验证

OmniSharp Logs

答案 5 :(得分:0)

我今天遇到同样的问题,试着将自己从Visual Studiod转移到Code, 由于我的项目基于Microservie,因此我对每个微服务都有多个解决方案和回购,因为CI / CD简单, 现在,Multipel Root Work Space的VS代码功能帮助了我, 因此,如果您从专业发展前景设置VS代码作为c#开发人员,请按照以下步骤进行操作

  • 安装Node.js,
  • 安装NPM。
  • 安装.net Core
  • 安装git。(也可以是其他scm)
  • 现在安装VS Code,
  • 安装OMNI Sharp C#扩展,这将帮助您进行调试并提供灵活性并提供Go To Defination功能(它有一个限制,即使您有多根工作区,它只能在一个解决方案上运行,我认为他们保持这样的方式来保持重量轻,在多种解决方案之间切换,在这种情况下你必须使用开关项目选项。 enter image description here
  • 我喜欢的两个更好的扩展
    • C#IDE(帮助您创建一个新的好模板来创建一个类文件,Inferface选项,我喜欢的是,当你创建costructor并提取参数显示建议时,只需按Ctrl +创建它们的字段或proeperty。)< / LI>
    • Git History检查Git历史。
  • Multiple Teriminal也很不错,因为我必须在开发时运行许多服务。
  • 您可以设置启动。设置调试所需的每个独立项目(如果不想手动执行,首先逐个打开每个解决方案文件夹,vsc帮助将为您创建)
  • 要创建WorkSpace,只需开始将工作区选项卡添加到工作区选项卡,
  • Crtl + shif + P:工作区:打开配置文件,你也可以设置复合启动设置,同时在调试模式下打开多个sln, 如下所示:  “发射”:{     “配置”:[

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

    }

答案 6 :(得分:0)

我遇到了同样的问题,但是有一个TypeScript项目文件夹。解决方案是简单地重新打开文件夹。

相关问题