簡體   English   中英

VSCode OmniSharp / C#intellisense沒有看到Ionide / F#lib模塊/命名空間

[英]VSCode OmniSharp/C# intellisense does not see Ionide/F# lib modules/namespaces

我正在使用VSCode-Insiders,OmniSharp C#intellisense沒有看到F#類型/模塊/命名空間。 這是一個簡單的項目:

module T1

let t = 42

和C#:

using System;

namespace flowRunner
{
    class Program
    {
      static void Main(string[] args)
        {
            Console.WriteLine(T1.t);
        }
    }
}

通過命令行進行dotnet構建可以正常工作。 dotnet運行也可以。 並在VS Code中進行調試。 但是智能顯示:

智力問題

問題: 我該如何解決? 我在較大的解決方案上也有類似的問題,當您周圍都出現1K錯誤而不是錯誤時,這會很煩人。

另外,我注意到這是從某個時間點開始的(假設使用一些新版本的IDE和/或Extension等)。

Omnisharp日志(它的一部分,但是沒有錯誤或警告):

[info]: OmniSharp.Services.DotNetCliService
        DotNetPath set to dotnet
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 2 MSBuild instance(s)
            1: Visual Studio Build Tools 2017 15.9.28307.812 - "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin"
            2: StandAlone 16.0 - "C:\Users\dvitel\.vscode-insiders\extensions\ms-vscode.csharp-1.21.1\.omnisharp\1.34.2\.msbuild\Current\Bin"
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        MSBUILD_EXE_PATH environment variable set to 'C:\Users\dvitel\.vscode-insiders\extensions\ms-vscode.csharp-1.21.1\.omnisharp\1.34.2\.msbuild\Current\Bin\MSBuild.exe'

另外,我在Ionide的日志下拉列表中沒有找到任何條目(我很確定它早已存在)。

項目配置為具有TargetFramework net45。 但是我也嘗試過netcoreapp2.2-它沒有用。

組態。 VS代碼-內部人員:

Version: 1.38.0-insider (user setup)
Commit: 185308c0dd317d73fe4c19dea347582dee9650de
Date: 2019-08-26T09:46:11.283Z
Electron: 4.2.9
Chrome: 69.0.3497.128
Node.js: 10.11.0
V8: 6.9.427.31-electron.0
OS: Windows_NT x64 10.0.18362

擴展(及其版本):

使用的擴展名

.NET Core SDK:

PS C:\Users\dvitel\Documents\Visual Studio 2019\SO> dotnet --info
  Version: 2.2.6
  Commit:  7dac9b1b51

.NET Core SDKs installed:
  2.0.0 [C:\Program Files\dotnet\sdk]
  2.1.200 [C:\Program Files\dotnet\sdk]
  2.2.401 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

令人沮喪的是,但從本質上來說,Omnisharp不支持F#,因此,據我所知,我們無法做很多事情來使其在設計時起作用。

要修復intellisense,您可以構建fsharp項目的dll,並從.csproj引用它。 如果您需要從C#到F#來回跳轉,則可以設置腳本(從命令行觸發或在vscode中執行任務)和觀察程序(例如dotnet watch build )來重建F#項目。 然后使用Omnisharp: Restart Omnisharp命令進行刷新,它應該將其拾取。

免責聲明:我是初學者。

我想我找到了答案。 Omnisharp日志指出它使用獨立16.0 MSBuild實例。 正如我在github上發現的那樣,有些人處理過同樣的問題。 例如, 這里的家伙解決了問題,但使用F Sharp編譯器安裝了VS Build工具2017。

從他的Ominsharp日志中,選擇了Visual Studio Build Tools 2017 15.3.26730.15實例。 因此,我假設omn​​isharp附帶的msbuild存在問題

不幸的是,我沒有找到如何選擇其他MSBuild實例或更改MSBUILD_EXE_PATH的常規方法(嘗試omn​​isharp.json-無法正常工作),因此我只重命名了Standalone 16.0的.msbuild文件夾。 它使用VS MSBUild實例,但給出錯誤“找不到指定的 SDK'Microsoft.NET.Sdk '” ,因此我運行VS Installer並添加了.NET Core構建工具。

在這種智能之后,可以與<ProjectReference Include="..\\flow\\flow.fsproj" />

作品

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM