繁体   English   中英

VSCode C#“转到定义”(F12)不起作用

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

我正在使用 VSCode 1.19 并尝试在 C# 文件中“转到>转到定义”,就像在 Visual Studio 中一样,它什么也没做。 在 a.js 文件中它运行良好,我猜是否有一些解决方法。

文件夹中可能有多个“项目”,而 VSCode 选择了“错误”的一个。 (在 VSCode 术语中,“项目”是指 sln 文件)

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

如果您打开输出窗口并选择“OmniSharp Logs”,您将看到它正在读取您的 csproj。 完成后,您的 goto 定义将开始工作

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

CTRL + SHIFT + P -> OmniSharp: Restart OmniSharp

“去定义”为我工作了很长时间,但最近停止工作。 我的解决方案是:

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

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

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

1. Crtl+ P

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

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

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

OmniSharp 日志

我在 VSCode(多个项目 Web API 和 Angular MVC)中遇到了同样的问题,并通过创建一个新的sln文件来解决。 请执行以下步骤:

第一步:创建项目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打开项目。

我解决了

  1. 检查omnisharp日志上的错误omnisharp日志

OniSharp 错误:找到 dotnet 版本 5.0.201。 最低要求版本为 6.0.100

  1. 在 C# 扩展用户/工作空间上设置“omnisharp.useModernNet”:false

未选中 .net 6

  1. 打开源代码文件夹并重新加载 vscode

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

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

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

我知道我迟到了这个线程,但是重新启动 omnisharp 并没有为我解决这个问题。 解决问题的是运行“dotnet restore”并再次打开项目文件夹。

插件VSCODE“角度语言服务”

  1. 需求角度服务
  2. volver 安装 ANGULAR SERVICE
  3. REINICIAR VISUAL-代码

如果安装了所有必需的扩展,请尝试使用 Shift+Fn+F12 取决于您的系统配置

就我而言,@Abdul Saboor 的回答让我朝着正确的方向前进。 我检查了日志,结果发现此功能需要 .NET 6。

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

  • 安装 Node.js,
  • 安装 NPM。
  • 安装 .net 核心
  • 安装git。(也可以是其他scm)
  • 现在安装 VS Code,
  • 安装 OMNI Sharp C# 扩展,这将帮助您进行调试以及提供智能并提供诸如转到定义功能之类的功能(它有一个限制,即使您有多个根工作区,它也只能在一个解决方案上运行,我认为他们保留了它像这样保持东西轻量化,在这种情况下你必须使用切换项目选项在多个解决方案之间切换。 在此处输入图片说明 )
  • 我喜欢的两个更好的扩展是
    • C# IDE(用几个新的不错的模板来帮助你创建类文件,接口选项,我喜欢的是,当你创建 costructor 和拉参数时显示建议,只需按 Ctrl+ 即可为它们创建文件或属性。)
    • Git历史检查Git历史。
  • 多终端也是一个不错的功能,因为我必须在开发时运行许多服务。
  • 您可以为调试所需的每个单独项目设置launch.setting(如果不想手动进行,请先单独打开每个解决方案文件夹,vsc帮助将为您创建)
  • 要创建工作区,无需做任何工作,只需开始将 sln 文件夹添加到工作区选项卡,
  • Crtl+shif+P : Workspace:open 配置文件之后你也可以设置复合启动设置,在调试模式下同时打开多个sln,如下所示: "launch": { "configurations": [

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

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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