简而言之,问题在于,虽然我的机器上安装了 Mono,但我没有 DNX Mono。通过本地 DNVM (dnvm upgrade -r mono) 安装它解决了这个问题,现在我在 Visual Studio Code 中获得了很好的 IntelliSense 支持。
现在说来话长。
Visual Studio Code 使用 OmniSharp 提供 IntelliSense 支持。 OmniSharp 是一组工具,通过在您的机器上运行的基于 Nancy 的 Web API 提供 C# 代码分析服务(关于它的精彩帖子 here 和 here)。
我没有得到任何 IntelliSense,因为 OmniSharp 运行时出现错误,如果我更加注意 Visual Studio 代码输出窗口(@987654329@L 在 Mac 上),我很容易发现这些错误。 OmniSharp 日志(见下文)显示它尝试使用 dnx-mono.1.0.0-rc1-update1 运行时,然后抛出异常,因为它不存在。
据我了解,OmniSharp 无法使用 DNX CoreCLR (because it doesn't support sockets?),需要 DNX Mono 才能运行。 VS Code GitHub repo here 有一些关于这个话题的讨论。
运行 dnvm upgrade -r mono 并重新启动 Visual Studio Code 解决了该问题。我的 DNVM 设置现在如下所示:
请注意,您不必为了让 IntelliSense 工作而使用 DNX Mono 进行开发。你只需要安装它。
OmniSharp 日志
[INFO] 在 APP_PATH 启动 OmniSharp...
[INFO] 从“/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/jrieken.vscode-omnisharp/bin/omnisharp”启动 OmniSharp,进程 ID 为 34893...
[INFORMATION:OmniSharp.Startup] Omnisharp 服务器在主机 34884 的 APP_PATH 位置使用 stdio 运行。
[INFORMATION:OmniSharp.Dnx.DnxProjectSystem] 扫描 DNX 项目的 APP_PATH
[INFORMATION:OmniSharp.Dnx.DnxPaths] 使用运行时'/Users/nsamteladze/.dnx/runtimes/dnx-coreclr-darwin-x64.1.0.0-rc1-update1'。
[INFORMATION:OmniSharp.Dnx.DnxProjectSystem] 找到项目 APP_PATH/project.json。
[INFORMATION:OmniSharp.Dnx.DesignTimeHostManager] 使用“/Users/nsamteladze/.dnx/runtimes/dnx-mono.1.0.0-rc1-update1”作为设计时主机。
[ERROR:OmniSharp.Startup] 项目系统“DnxProjectSystem”引发异常。
System.InvalidOperationException:尚未设置文件名
在 System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo,System.Diagnostics.Process 进程)[0x00000] 在:0
在 System.Diagnostics.Process.Start () [0x00000] in :0
在 (wrapper remoting-invoke-with-check) System.Diagnostics.Process:Start ()
在 OmniSharp.Dnx.DesignTimeHostManager.Start (System.String hostId, System.Action`1 onConnected) [0x00000] in :0
在 OmniSharp.Dnx.DnxProjectSystem.Initalize(IConfiguration 配置)[0x00000] 中:0
在 OmniSharp.Startup.Configure(IApplicationBuilder 应用程序,IServiceProvider serviceProvider,ILibraryManager manager,IOmnisharpEnvironment env,ILoggerFactory loggerFactory,ISharedTextWriter writer,IOptions'1 optionsAccessor)[0x00000] in :0
[INFORMATION:OmniSharp.MSBuild.MSBuildProjectSystem] 在 APP_PATH 中找不到解决方案文件
[INFORMATION:OmniSharp.ScriptCs.ScriptCsProjectSystem] 检测 APP_PATH 中的 CSX 文件。
[INFORMATION:OmniSharp.ScriptCs.ScriptCsProjectSystem] 找不到任何 CSX 文件
[INFORMATION:OmniSharp.Startup] 解决方案已完成加载