C# 智能感知在 VS 代码中不起作用

C# intellisense not working in VS Code

我正在使用 Visual Studio 代码,我已经将 C# OMNISharp 插件加载到我的系统中,它在我现有的 project/solutions.

中运行良好

但是,我刚刚在 Visual Studio 代码中创建了一个新解决方案和一个新项目,听起来对于这个特定的解决方案,Intellisense 或任何其他 Omnisharp 功能都不起作用。我尝试了以下操作:

此外,我注意到的一件事是,当在 Visual studio 中创建解决方案时,它有很多代码如下所示:

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{AEA16303-6991-4FF1-A3A9-72D892D7968C}"
EndProject

基本上,这些都是项目参考。但是,当解决方案由 Visual Studio 代码创建时,则不会有任何类似的部分。该解决方案运行和编译良好,只是它看起来与 Visual Studio 解决方案的外观根本不同。

但是,似乎没有任何效果。有什么我可以尝试让它发挥作用的吗?有什么想法吗?

您的新解决方案和项目是在 Windows 10 的 "OneDrive" 文件夹中创建的吗?在最新的 Windows 10 版本中,当项目驻留在具有 "File On-Demand" 功能的 OneDrive 文件夹中时,C# 插件无法启动。请在 Github

上查看 this issue

您是如何创建项目的? 为使 Intellisense 正常工作,项目需要具有特定的结构。

假设您有 mac 的 .net 核心 sdk 并安装了 omnisharp 扩展:

尝试以下操作:

  1. 打开您的集成终端(查看 => 集成终端)
  2. 创建一些新目录来托管测试项目说 "testproj" 例如 => mkdir testproj

  3. 使用 dotnet cli 初始化项目 => dotnet new console

看看你有没有智能感知。
我还建议观看 .net core on Mac introduction video.

It's caused by adding *.sln and *.csproj to your "files.exclude" setting.

试试这个:

Code -> Preferences -> Settings -> "omnisharp.useMono": true/false

从设置文件中删除。

或者,使用 MonoDevelop 或 Visual Studio 2015/2017 first 打开您的项目,然后重新打开 VS-Code。


编辑 1: 尝试设置 "omnisharp.useGlobalMono": never,然后重新启动 omnisharp 服务器。 图片来源: and

在 VS Code v1.43.2 中,将以下行添加到对我有用的设置中:

"omnisharp.useGlobalMono": "never"

设置的值 "never" 必须用双引号引起来,否则它会被标记为红色。即使有引号,它仍然以黄色突出显示。不知道为什么,因为所有其他 options/values 都是蓝色的。我认为这表示某种警告,但它有效。

(顺便说一句,我很想了解 "Globally installed mono" 是什么。但是我在这里唯一的兴趣是让 IntelliSense 工作,所以回复:omnisharp 我恳求 'newb'。)

这对我有用

"omnisharp.useGlobalMono": "never"

我的情况是,问题出在我项目的资源文件夹中。

我在资源中添加了一个 visual studio .sln 文件用作模板,但我不知何故用自定义标签“可变”。 OmniSharp 试图解析它,但显然失败了,但是 VSCode 中没有弹出错误,它只在 OmniSharp 输出中可见。

解决方案是重命名模板 from .sln to .txt 以防止 OmniSharp 加载它。

就我而言,安装 C# 扩展后,我必须单击扩展上的设置图标,然后单击“添加到工作区推荐”

我在 2022 年遇到了这个问题,上面提到的对我没有任何帮助。 对我来说,问题是由 VS Code 和 C# 插件更新引起的(在我的例子中,c# 插件升级到 v1.25.0+),因为在这个版本中他们做了这个:

.NET Framework builds of OmniSharp no longer ship with Mono or the MSBuild tooling (See announcement omnisharp-roslyn#2339). To ensure that the C# > > extension remains usable out of the box for .NET SDK projects, we have > changed the default value of omnisharp.useModernNet to true.
If you still need Unity or .NET Framework support, you can set > omnisharp.useModernNet to false in your VS Code settings and restart OmniSharp.

所以整个问题出在 omnisharp.useModernNet 默认情况下设置为 true,这导致整个插件无法正常工作,但按照他们所说的和 设置 omnisharp.useModernNet 在 .vscode > settings.json 文件中手动设置为 false 为我解决了这个问题!
有关详细信息,您还可以在 VS Code 的插件详细信息部分或此 webpage 上阅读完整的官方 VS Code C# 插件公告!