0

我正在使用 Visual Studio Code 在 Mac 上开发 ASP.NET 5 应用程序。我遇到的问题是,除了我之前键入的方法和变量名称的简单自动完成之外,我没有得到任何IntelliSense支持(例如可用的类方法)。

该应用程序针对 DNX Core 5.0:

"frameworks": {
    "dnxcore50": { }
},

我通过 DNVM 安装了 CoreCLR 1.0.0-rc1-update1:

$dnvm 列表

活动版本运行时架构操作系统别名

------ ------- ------- ------------ --------------- --- --

  • 1.0.0-rc1-update1 coreclr x64 darwin 默认

我尝试了以下方法来解决问题,但没有运气:

  • 确保选择了一个项目(右下角的火图标)
  • 明确提出建议settings.json

    {
        "editor.quickSuggestions": true`
    }
    

任何建议将不胜感激。

4

1 回答 1

7

简而言之,问题在于,虽然我的机器上安装了 Mono,但我没有 DNX Mono。通过本地 DNVM 安装它(dnvm upgrade -r mono)解决了这个问题,现在我在 Visual Studio Code 中获得了很好的 IntelliSense 支持。

现在说来话长。

Visual Studio Code 使用OmniSharp提供 IntelliSense 支持。OmniSharp 是一组工具,可通过在您的机器上运行的基于 Nancy 的 Web API 提供 C# 代码分析服务(此处此处的精彩帖子)。

我没有得到任何 IntelliSense,因为 OmniSharp 运行时出现错误,如果我更加注意 Visual Studio 代码输出窗口(Cmd+L L在 Mac 上),我很容易发现这些错误。OmniSharp 日志(见下文)显示它尝试使用dnx-mono.1.0.0-rc1-update1运行时,然后抛出异常,因为它不存在。

据我了解,OmniSharp 不能使用 DNX CoreCLR(因为它不支持套接字?)并且需要 DNX Mono 才能运行。在此处的 VS Code GitHub 存储库中对此主题进行了一些讨论。

运行dnvm upgrade -r mono并重新启动 Visual Studio Code 解决了这个问题。我的 DNVM 设置现在如下所示: 在此处输入图像描述

请注意,您不必为了让 IntelliSense 工作而使用 DNX Mono 进行开发。你只需要安装它。

OmniSharp 日志

[INFO] 在 APP_PATH 启动 OmniSharp...

[信息] 从“/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/jrieken.vscode-omnisharp/bin/omnisharp”启动 OmniSharp,进程 ID 为 34893...

[信息:OmniSharp.Startup] Omnisharp 服务器使用 stdio 在主机 34884 上的位置 APP_PATH 运行。

[INFORMATION:OmniSharp.Dnx.DnxProjectSystem] 扫描 DNX 项目的 APP_PATH

[信息:OmniSharp.Dnx.DnxPaths] 使用运行时“/Users/nsamteladze/.dnx/runtimes/dnx-coreclr-darwin-x64.1.0.0-rc1-update1”。

[信息:OmniSharp.Dnx.DnxProjectSystem] 找到项目 APP_PATH/project.json。

[信息:OmniSharp.Dnx.DesignTimeHostManager] 使用“/Users/nsamteladze/.dnx/runtimes/dnx-mono.1.0.0-rc1-update1”作为设计时主机。

[错误:OmniSharp.Startup] 项目系统“DnxProjectSystem”引发异常。System.InvalidOperationException: 文件名尚未设置在 System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process) [0x00000] in :0 at System.Diagnostics.Process.Start () [ 0x00000] in :0 at (wrapper remoting-invoke-with-check) System.Diagnostics.Process:Start () at OmniSharp.Dnx.DesignTimeHostManager.Start (System.String hostId, System.Action`1 onConnected) [0x00000] in :0 在 OmniSharp.Dnx.DnxProjectSystem.Initalize (IConfiguration 配置) [0x00000] 在 OmniSharp.Startup.Configure (IApplicationBuilder 应用程序, IServiceProvider serviceProvider, ILibraryManager manager, IOmnisharpEnvironment env, ILoggerFactory loggerFactory, ISharedTextWriter writer,

[INFORMATION:OmniSharp.MSBuild.MSBuildProjectSystem] 在 APP_PATH 中找不到解决方案文件

[信息:OmniSharp.ScriptCs.ScriptCsProjectSystem] 检测 APP_PATH 中的 CSX 文件。

[信息:OmniSharp.ScriptCs.ScriptCsProjectSystem] 找不到任何 CSX 文件

[INFORMATION:OmniSharp.Startup] 解决方案已完成加载

于 2015-12-26T22:55:03.507 回答