Ubuntu 16.10上的OmniSharp-VIM,OmniSharp-Roslyn和dotnet核心 - 语法检查无法识别C#6并需要解决方案文件

Dal*_*use 7 c# vim syntastic omnisharp .net-core

我正在尝试为dotnet核心开发设置我的Ubuntu机器.我已经精心安装了Omnisharp-vim并将其设置为与OmniSharp-Roslyn服务器配合使用.我也安装了Syntastic和YouCompleteMe.我正在进行语法检查和Intellisense.我有两个问题:

  1. 没有解决方案文件,Omnisharp-vim无法运行.Dotnet核心项目不必拥有解决方案文件.我该如何解决这个问题?

  2. 我收到有效C#6代码的语法错误.例如,它无法识别nameof运算符.

Sha*_*tin 5

如何?

将有效global.json文件添加到根目录。

{}
Run Code Online (Sandbox Code Playgroud)

在 vimrc 文件顶部添加两行。

let g:OmniSharp_server_type = 'roslyn'
let g:OmniSharp_prefer_global_sln = 1
Run Code Online (Sandbox Code Playgroud)

为什么?

这两个OmniSharp设置告诉omnisharp-vim 使用 Roslyn 并使用包含global.json文件的目录。

以下是使用这些变量的OmniSharp.vim 文件源代码。

if g:OmniSharp_server_type ==# 'roslyn' && g:OmniSharp_prefer_global_sln
  let global_solution_files = s:globpath(dir, 'global.json')
  call filter(global_solution_files, 'filereadable(v:val)')
  if !empty(global_solution_files)
    let solution_files = [dir]
    break
  endif
endif
Run Code Online (Sandbox Code Playgroud)

如果这不起作用......

尝试从命令行手动启动 OmniSharp:

omnisharp-vim\omnisharp-roslyn\artifacts\scripts\OmniSharp.cmd -s C:\temp\
Run Code Online (Sandbox Code Playgroud)

C:\temp\目录包含一个新的 .NET Core 项目以及有效的 global.json 文件。