繁体   English   中英

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

[英]C# intellisense not working in VS Code

我正在使用 Visual Studio Code,并且我已经将 C# OMNISharp 插件加载到我的系统中,它在我现有的项目/解决方案中运行良好。

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

  • 重新启动 Visual Studio 代码
  • 禁用和启用我的 OmniSharp 插件

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

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

基本上,这些都是项目参考。 但是,当 Visual Studio Code 创建解决方案时,就没有这样的部分了。 该解决方案可以正常运行和编译,只是它看起来与 Visual Studio 解决方案的外观根本不同。

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

这是由将 *.sln 和 *.csproj 添加到“files.exclude”设置中引起的。

尝试这个:

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

从设置文件中删除。

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


编辑1:尝试设置"omnisharp.useGlobalMono": never ,然后重新启动omnisharp服务器。 学分: The_Wolfkao peter

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

假设您安装了 .net core sdk for mac 和omnisharp 扩展:

尝试以下操作:

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

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

看看你有没有智能感知。
我还建议在 Mac 介绍视频上观看 .net 核心

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

"omnisharp.useGlobalMono": "never"

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

(顺便说一句,我很想了解“全球安装的单声道”是什么。但是我在这里唯一的兴趣是让 IntelliSense 工作,所以回复:omnisharp 我恳求“newb”。)

这对我有用

"omnisharp.useGlobalMono": "never"

您的新解决方案和项目是在 Windows 10 的“OneDrive”文件夹中创建的吗? 在最新的 Windows 10 版本中,当项目驻留在 OneDrive 文件夹中且启用了“按需文件”功能时,C# 插件无法启动。 请在 Github 上查看这个问题

我的情况是,问题来自我项目的资源文件夹。

我在资源中添加了一个 Visual Studio .sln文件用作模板,但我以某种方式使用自定义标签对其进行了“可变化”。 OmniSharp 试图解析它并且显然失败了,但是在 VSCode 中没有弹出错误,它只在 OmniSharp 输出中可见。

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

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

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

OmniSharp 的 .NET Framework 版本不再随 Mono 或 MSBuild 工具一起提供(请参阅公告 omnisharp-roslyn#2339)。 为确保 C# > > 扩展仍然可用于 .NET SDK 项目,我们 > 将 omnisharp.useModernNet 的默认值更改为 true。
如果您仍需要 Unity 或 .NET Framework 支持,您可以在 VS Code 设置中将 > omnisharp.useModernNet 设置为 false 并重新启动 OmniSharp。

所以整个问题是omnisharp.useModernNet默认设置为true,这会使整个插件无法运行,但是按照他们所说的并在.vscode> settings.json文件中手动将omnisharp.useModernNet设置为false为我解决了这个问题!
有关更多信息,您还可以在 VS Code 的插件详细信息部分或此网页上阅读完整的官方 VS Code C# 插件公告!

仅当您在 c# 的 vs.code 中没有看到错误时,这才有用。 首先,您需要拥有当前的 dotnet 以及当前的 sdk。 您将需要谷歌并下载这些。 然后,在 vs.code 中转到文件 > 首选项 > 设置并搜索 settings.json。 这将为您提供 vs.code 的通用设置。 删除所有现有的omnisharp 设置。 在扩展中重新安装当前的 c#。 您可能需要重新启动设置才能实施。 不要忘记 CTRL + SHIFT + P,您可以在其中搜索 ommnisharp 并重新启动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM