dvi*_*tel 5 c# f# omnisharp visual-studio-code ionide
我正在使用 VSCode-Insiders 和 OmniSharp C# intellisense 看不到 F# 类型/模块/命名空间。这是一个简单的项目:
module T1
let t = 42
Run Code Online (Sandbox Code Playgroud)
和 C#:
using System;
namespace flowRunner
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(T1.t);
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用 dotnet build 通过命令行构建效果很好。dotnet run 也可以正常工作。并且可以在 VS Code 中进行调试。但智能感知显示:
问题:我该如何解决这个问题?我在更大的解决方案上也遇到了类似的问题,当你周围有 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'
Run Code Online (Sandbox Code Playgroud)
另外,我在 Ionide 的日志下拉列表中没有找到任何条目(我很确定它之前就存在过)。
项目配置为具有 TargetFramework net45。但我也尝试了 netcoreapp2.2 - 它不起作用。
配置。VS Code - 内部人员:
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
Run Code Online (Sandbox Code Playgroud)
扩展(及其版本):
.NET核心SDK:
[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'
Run Code Online (Sandbox Code Playgroud)
这令人沮丧,但本质上 Omnisharp 不支持 F#,因此据我所知,我们无能为力使其在设计时正常工作。
要修复智能感知,您可以构建 fsharp 项目的 dll 并从您的.csproj. 如果您需要在 C# 和 F# 之间来回跳转,您可以设置脚本(从命令行触发或从 vscode 中的任务触发)和观察程序(例如dotnet watch build)来重建 F# 项目。然后使用Omnisharp: Restart Omnisharp命令刷新,它应该会拾取它。
免责声明:我是初学者。