首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VSCode OmniSharp/C# intellisense没有看到Ionide/F# lib模块/命名空间

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

Stack Overflow用户
提问于 2019-08-27 00:14:57
回答 2查看 1.5K关注 0票数 5

我使用的是VSCode-内部人员和OmniSharp C# intellisense没有看到F#类型/模块/名称空间。下面是一个简单的项目:

代码语言:javascript
复制
module T1

let t = 42

和C#:

代码语言:javascript
复制
using System;

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

使用dotnet通过命令行构建可以很好地工作。此外,dotnet运行也很好。并在VS代码中进行调试。但是intellisense显示:

问题:,我如何解决这个问题?,我在更大的解决方案上也有类似的问题,当你周围都是1K错误时,这是非常恼人的,而不是错误。

另外,我注意到这是从某个时间点开始的(假设有一些新版本的IDE和/或扩展等等)。

Omnisharp日志(它是其中的一部分,但没有错误或警告):

代码语言:javascript
复制
[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 -它没有工作。

配置。与守则-内部人士:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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]
EN

回答 2

Stack Overflow用户

发布于 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" />很好地工作。

票数 4
EN

Stack Overflow用户

发布于 2019-08-27 00:26:33

这是令人沮丧的,但基本上Omnisharp不支持F#,所以我们没有什么办法让它在设计时工作,从我所能知道的。

要修复intellisense,您可以构建fsharp项目的dll并从您的.csproj中引用它。如果需要从C#来回跳到F#,可以设置脚本(从命令行触发或vscode中的任务)和观察者(例如dotnet watch build)来重新构建F#项目。然后使用Omnisharp: Restart Omnisharp命令进行刷新,它应该会捡起来。

免责声明:我是个初学者。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57666251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档