我使用的是VSCode-内部人员和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代码中进行调试。但是intellisense显示:

问题:,我如何解决这个问题?,我在更大的解决方案上也有类似的问题,当你周围都是1K错误时,这是非常恼人的,而不是错误。
另外,我注意到这是从某个时间点开始的(假设有一些新版本的IDE和/或扩展等等)。
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 -它没有工作。
配置。与守则-内部人士:
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核心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]发布于 2019-08-27 16:44:39
我想我找到了答案。Omnisharp日志声明它使用独立的16.0 MSBuild实例。正如我在github上发现的,有些人处理的是同样的问题。例如,这里解决了这个问题,但是用For安装VS构建工具2017。
从他的Ominsharp日志中,选中了2017 15.3.26730.15实例。因此,我假设msbuild存在一个问题,这个问题是由omnisharp交付的。
不幸的是,我没有找到选择其他MSBuild实例或更改MSBUILD_EXE_PATH的正常方法(尝试了omnisharp.json -不起作用),所以我只是重新命名了独立的16.0的.msbuild文件夹。它采用了VS MSBUild实例,但给出了错误“无法找到指定的SDK 'Microsoft.NET.Sdk‘”,因此我运行VS安装程序并添加了.NET核心构建工具。
在此之后,智能与<ProjectReference Include="..\flow\flow.fsproj" />很好地工作。

发布于 2019-08-27 00:26:33
这是令人沮丧的,但基本上Omnisharp不支持F#,所以我们没有什么办法让它在设计时工作,从我所能知道的。
要修复intellisense,您可以构建fsharp项目的dll并从您的.csproj中引用它。如果需要从C#来回跳到F#,可以设置脚本(从命令行触发或vscode中的任务)和观察者(例如dotnet watch build)来重新构建F#项目。然后使用Omnisharp: Restart Omnisharp命令进行刷新,它应该会捡起来。
免责声明:我是个初学者。
https://stackoverflow.com/questions/57666251
复制相似问题