簡體   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