智能感知不会自动运行VSCode

问题描述 投票:19回答:7

我刚下载了Visual Studio Code,我的Intellisense不会自动运行。

控制此设置的两个设置似乎设置正确:

"editor.quickSuggestions": true,
"editor.suggestOnTriggerCharacters": true,

当我开始输入并按“CTRL + Space”时,我确实得到了一个Intellisense菜单,但是这给了我一个列表,而不是我的对象专门的东西。

我究竟做错了什么?

c# visual-studio-code
7个回答
38
投票

如果您有VSCode知道的project.json文件或*.sln文件,Visual Studio Code的更高级编辑功能(IntelliSense,重构工具等)仅适用于C#文件。使用*.sln文件或project.json打开文件夹(即打开文件菜单并单击打开文件夹...),VSCode将尝试查找文件夹中的所有项目/解决方案文件。如果有多个项目,您可能需要从状态栏右侧(窗口底部)的项目按钮中选择一个。

来自VSCode website

  • 选择project.json文件正在打开一个DNX项目,VSCode将加​​载该项目以及引用的项目
  • 选择*.sln文件正在打开一个MSBuild项目。它将加载引用的*.csproj-projects和兄弟或后代project.json文件,但不加载从解决方案文件引用的其他项目文件。
  • 选择folder将使VSCode扫描*.slnproject.json文件,VSCode将尝试加载它们。


6
投票

从0.5版本开始,我发现我需要关闭并重新打开我的工作文件以获取一些新的智能感知信息以开始为我自己的文件工作。这通常发生在我打开文件后需要使用我刚刚创建的另一个文件的类型信息。直到我关闭并重新打开它们(在编辑器中),智能感知并不总是有效。

希望随着应用程序的成熟,这将得到解决。


3
投票

为了使智能工作,Visual Studio Code扩展OmniSharp应该与Mono一起使用。当您打开项目/解决方案文件夹时,OmniSharp会从project.json或dotnet解决方案文件中获取项目依赖项(如果使用其他版本的visual studio创建项目/解决方案)。

因此,当您在立即打开项目/解决方案文件夹后查看omnisharp的输出窗口时,您可能会看到以下行

Starting OmniSharp server at 2017-9-18 09:26:44
    Target: /Users/{username}/Source/{Your Solution Folder}/{Your Solution
file}.sln

OmniSharp server started wth Mono
    Path: /Users/{username}/.vscode/extensions/ms-vscode.csharp-1.12.1/.omnisharp/run
    PID: 5808

帖子,你可能会看到几行如下,

[info]: OmniSharp.MSBuild.MSBuildProjectSystem
        Update project: {Your Project1 Name}
[info]: OmniSharp.MSBuild.MSBuildProjectSystem
        Update project: {Your Project2 Name} 
....

它们意味着您的项目得到了OmniSharp Extension的认可。

如果您收到任何有关超时的错误消息,请进入Visual Studio代码的设置,并添加如下所示的配置覆盖:

  "omnisharp.projectLoadTimeout": 200

我知道等待200秒太长了。但不要担心,这不会阻止你再使用项目文件。但是,请记住,一旦成功加载文件夹中的所有项目,IntelliSense将自动可用。

随意延长Timeout设置,因为它可以帮助你获得智能感知 - 尽管你没有立即得到它。

这是另一个使用相同解决方案的链接:https://github.com/OmniSharp/omnisharp-vscode/issues/1585

希望我的信息能帮到你!享受你的VSCode!


2
投票

另一个故障排除策略,如果上述任何一个都没有解决的问题是卸载Mono,如果您使用的是.NET Core,则无论如何都是不必要的。在对我们的企业存储库之一进行更改后,我也经历了Intellisense的突然消失,其中包括从ASP.NET Core 2.0升级到2.1。奇怪的是,与此同时,Intellisense在运行ASP.NET Core 2.2的另一个C#项目repo中运行良好。

对于有问题的项目,我很困惑地看到Omnisharp服务器每次重启的成功日志以及完全干净的构建和运行。当我将这些Omnisharp日志与2.2项目的日志进行比较时发现它们实际上是相同的,这种困惑有所增加。

卸载Mono后,改变的一个细节是Omnisharp的开始。现在它从位于~/.vscode/extensions/ms-vscode.csharp-1.19.0/.omnisharp/1.32.18/run的shell脚本启动。以前,Mono本身就是从~/.vscode/extensions/ms-vscode.csharp-1.19.0/.omnisharp/1.32.18/omnisharp/Omnisharp.exe的可执行文件启动服务器。

我在这个例子中尝试的其他故障排除虽然无济于事:

  • dotnet clean /删除bin和obj目录
  • 更新launch.json以指向正确的/bin/Debug/netcoreapp2.1构建目录
  • 擦除我的本地nuget缓存
  • 重启Omnisharp
  • 卸载并重新安装VS代码,以及从1.33.1中恢复版本,因为破损与2019年3月更新奇怪地重合
  • 卸载并重新安装C#VS代码扩展,以及在其他用户报告所述版本干扰某些项目的Intellisense的情况下,从1.19.0恢复版本*
  • 在项目根目录中添加global.json文件以覆盖最新.NET Core SDK的默认利用率(我的是2.2.105)并使用2.1.302与项目版本一起运行
  • 擦除/重建项目.sln文件

规格:VS Code 1.33.1,C#Extension 1.19.0,MacOS High Sierra 10.13.6。


*注意:事实证明,在另一个.NET Core 2.1项目中,如上所述VS Code中存在相同的问题,单独卸载Mono并没有解决问题。我还最终需要将C#扩展恢复到1.18.0以恢复Intellisense。奇怪的。


1
投票

到目前为止,我已经在C#中获得了一些很好的经验:https://marketplace.visualstudio.com/items?itemName=jchannon.csharpextensions

“此扩展遍历文件夹树以查找project.json或* .csproj,并将其用作父文件夹以确定名称空间。”


1
投票

从命令Pallete尝试“安装扩展” - 可能如果没有C#intellisense:

enter image description here

https://code.visualstudio.com/docs/customization/colorizer


1
投票

这个案例适用于以前工作正常的现有项目。通过vs代码“最近”历史记录打开。

对于dotnet核心。我打开了我的项目的* .csprog文件,没有做任何更改,并通过vs代码编辑器保存。

我保存后,所有的intellisense东西开始在我的项目中的其他文件中重新开始工作。

© www.soinside.com 2019 - 2024. All rights reserved.