IntelliSense在Mac上的Visual Studio代码中不起作用

时间:2015-12-25 23:16:25

标签: c# intellisense visual-studio-code omnisharp

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

该应用针对DNX Core 5.0:

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

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

  

$ dnvm list

     

Active Version Runtime Architecture OperatingSystem Alias

     

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

     
      
  • 1.0.0-rc1-update1 coreclr x64 darwin default
  •   

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

  • 确保选择了项目(右下角的火图标)
  • 明确转向settings.json

    中的建议
    {
        "editor.quickSuggestions": true`
    }
    

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:7)

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

现在是漫长的故事。

Visual Studio Code使用OmniSharp来提供IntelliSense支持。 OmniSharp是一套工具,通过在您的计算机上运行的基于Nancy的Web API提供C#代码分析服务(其中包含很棒的帖子herehere)。

我没有获得任何智能感知,因为OmniSharp运行时出现错误,如果我更加关注Visual Studio代码输出窗口(Mac上的Cmd+L L),我很容易就会发现错误。 OmniSharp Log(见下文)显示它尝试使用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设置现在看起来像这样: enter image description here

请注意,您无需使用DNX Mono进行开发即可使IntelliSense正常运行。你只需要安装它。

OmniSharp日志

  

[INFO]在APP_PATH ...

启动OmniSharp      

[INFO]从'/ Applications / Visual Studio Code.app/Contents/Resources/app/extensions/jrieken.vscode-omnisharp/bin/omnisharp'启动OmniSharp,流程ID为34893 ...

     

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

     

[信息: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进程)[0x00000] in:0     在System.Diagnostics.Process.Start()[0x00000]中:0     at(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] in:0     在OmniSharp.Startup.Configure(IApplicationBuilder app,IServiceProvider serviceProvider,ILibraryManager manager,IOmnisharpEnvironment env,ILoggerFactory loggerFactory,ISharedTextWriter writer,IOptions'1 optionsAccessor)[0x00000] in:0

     

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

     

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

     

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

     

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