我正在使用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中进行调试。但是智能显示:

c# - VSCode OmniSharp/C#intellisense没有看到Ionide/F#lib模块/命名空间-LMLPHP

问题:我该如何解决?我在较大的解决方案上也有类似的问题,当您周围都出现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


扩展(及其版本):

c# - VSCode OmniSharp/C#intellisense没有看到Ionide/F#lib模块/命名空间-LMLPHP

.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命令刷新,它应该将其拾取。

免责声明:我是初学者。

10-06 04:32