我正在使用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`
}
任何建议都将不胜感激。
答案 0 :(得分:7)
简而言之,问题是,当我在我的机器上安装了Mono时,我没有DNX Mono。通过本地DNVM(dnvm upgrade -r mono
)安装它解决了这个问题,现在我在Visual Studio Code中获得了很好的IntelliSense支持。
现在是漫长的故事。
Visual Studio Code使用OmniSharp来提供IntelliSense支持。 OmniSharp是一套工具,通过在您的计算机上运行的基于Nancy的Web API提供C#代码分析服务(其中包含很棒的帖子here和here)。
我没有获得任何智能感知,因为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设置现在看起来像这样:
请注意,您无需使用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]解决方案已完成加载