首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为neovim设置c#语言服务器(omnisharp),用.NET Core5.0.17开发应用程序

为neovim设置c#语言服务器(omnisharp),用.NET Core5.0.17开发应用程序
EN

Stack Overflow用户
提问于 2022-07-20 20:02:51
回答 1查看 1.7K关注 0票数 0

我一直在努力为新病毒建立一个C#语言服务器(omnisharp)。主要问题是,我必须使用.NET Core5.0.17和omnisharp不再附带mono和MSBuild工具(在omnisharp回购公告部分中提到)。

当我试图编辑一个.cs文件时,我会得到一条消息:"Client 1退出,使用exist代码150并发出信号0“。当我检查lsp.log时,我得到了"[ERROR][2022-07-20 13:09:08] .../vim/lsp/rpc.lua:420 "rpc" "dotnet" "stderr" "You must install or update .NET to run this application.\n\nApp: /home/josh/.local/share/nvim/lsp_servers/omnisharp/omnisharp/OmniSharp.dll\nArchitecture: x64\nFramework: 'Microsoft.NETCore.App', version '6.0.0-preview.7.21317.1' (x64)\n.NET location: /opt/dotnet/\n\nThe following frameworks were found:\n 5.0.17 at [/opt/dotnet/shared/Microsoft.NETCore.App]\n\nLearn about framework resolution:\nhttps://aka.ms/dotnet/app-launch-failed\n\nTo install missing framework, download:\nhttps://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=6.0.0-preview.7.21317.1&arch=x64&rid=manjaro-x64\n"

为了使Omnisharp与低于6.0的.NET版本一起工作,我必须执行以下操作:

  1. 设置useModernNet = false (在omnisharp-vscode回购需求部分中提到)
  2. 安装单声道 (在omnisharp-vscode回购需求部分中提到)。
  3. 由于我的发行版(manjaro),我还必须安装单msbuild (在omnisharp导言部分中提到)。

为了解决第一个问题,我为lsp安装程序生成一个lsp/settings/omnisharp.lua文件,用于设置cmp并按照lsp配置回购的指示设置useModernNet = false。我将这样的文件添加到lsp/lsp-installer.lua中,然后由lsp/init.lua调用。

希望有人能带我找到解决方案或正确的方向。谢谢你抽出时间阅读。

我的新安装程序是这里 (为克里斯@机创建的这里)

nvim/lua/user/lsp/lsp-installer.lua

代码语言:javascript
运行
复制
local status_ok, lsp_installer = pcall(require, "nvim-lsp-installer")
if not status_ok then
    return
end

-- Register a handler that will be called for all installed servers.
-- Alternatively, you may also register handlers on specific server instances instead (see example below).
lsp_installer.on_server_ready(function(server)
    local opts = {
        on_attach = require("user.lsp.handlers").on_attach,
        capabilities = require("user.lsp.handlers").capabilities,
    }

     if server.name == "jsonls" then
        local jsonls_opts = require("user.lsp.settings.jsonls")
        opts = vim.tbl_deep_extend("force", jsonls_opts, opts)
     end

   if server.name == "sumneko_lua" then
        local sumneko_opts = require("user.lsp.settings.sumneko_lua")
        opts = vim.tbl_deep_extend("force", sumneko_opts, opts)
     end
--------------------------------ADDED CODE--------------------------------    
   if server.name == "omnisharp" then
    local omnisharp_opts = require("user.lsp.settings.omnisharp")
        opts = vim.tbl_deep_extend("force", omnisharp_opts, opts)
   end
--------------------------------------------------------------------------    
    -- This setup() function is exactly the same as lspconfig's setup function.
    -- Refer to https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md
    server:setup(opts)
end)

nvim/lua/user/lsp/settings/omnisharp.lua

代码语言:javascript
运行
复制
local pid = vim.fn.getpid()
local omnisharp_bin = "/home/josh/.local/share/nvim/lsp_servers/omnisharp/omnisharp/OmniSharp.dll"

return {
  cmd = { omnisharp_bin, "--languageserver" , "--hostPID", tostring(pid) },
  omnisharp = {
    useModernNet = false,
    monoPath = "/usr/bin/mono"
  }
}

技术栈

系统(cat /etc/lsb-释放)

代码语言:javascript
运行
复制
DISTRIB_ID=ManjaroLinux
DISTRIB_RELEASE=21.3.1
DISTRIB_CODENAME=Ruah
DISTRIB_DESCRIPTION="Manjaro Linux"

.NET (dotnet --信息)

代码语言:javascript
运行
复制
.NET SDK (reflecting any global.json):
 Version:   5.0.408
 Commit:    da985e2a23

Runtime Environment:
 OS Name:     manjaro
 OS Version:
 OS Platform: Linux
 RID:         linux-x64
 Base Path:   /opt/dotnet/sdk/5.0.408/

global.json file:
  /home/josh/storage/Documents/csharp/global.json

Host:
  Version:      6.0.7
  Architecture: x64
  Commit:       0ec02c8c96

.NET SDKs installed:
  5.0.408 [/opt/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 5.0.17 [/opt/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 5.0.17 [/opt/dotnet/shared/Microsoft.NETCore.App]

Download .NET:
  https://aka.ms/dotnet-download

Learn about .NET Runtimes and SDKs:
  https://aka.ms/dotnet/runtimes-sdk-info

新病毒(nvim -版本)

代码语言:javascript
运行
复制
NVIM v0.7.0
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by builduser

Features: +acl +iconv +tui
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/share/nvim"

Run :checkhealth for more info

Mono (单版本)

代码语言:javascript
运行
复制
Mono JIT compiler version 6.12.0 (makepkg/ed0788bf61f Sun Apr 24 04:25:18 PM UTC 2022)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
    TLS:           __thread
    SIGSEGV:       altstack
    Notifications: epoll
    Architecture:  amd64
    Disabled:      none
    Misc:          softdebug
    Interpreter:   yes
    LLVM:          supported, not enabled.
    Suspend:       hybrid
    GC:            sgen (concurrent by default)

MSBuild ()

代码语言:javascript
运行
复制
Microsoft (R) Build Engine version 16.10.1 for Mono
Copyright (C) Microsoft Corporation. All rights reserved.

16.10.1.15601%
EN

回答 1

Stack Overflow用户

发布于 2022-08-31 18:11:38

我知道我参加聚会迟到了;-)

我建议使用csharp (https://www.nuget.org/packages/csharp-ls/)。Omnisharp已经过时了我使用它与征服者完成(https://github.com/neoclide/coc.nvim)

我的coc-setting.json看起来像:

代码语言:javascript
运行
复制
{
  "suggest.noselect": false,
  "coc.preferences.formatOnSaveFiletypes": [
      "csharp",
    "sql",
    "javascript",
    "typescript",
    "typescriptreact",
    "json",
    "javasciptreact",
    "typescript.tsx",
    "graphql"
  ],
  "languageserver": {
    "csharp": {
      "command": "csharp-ls",
      "rootPatterns": [
        "*.sln",
        "git"
      ],
      "filetypes": ["cs", "csharp"]
    },
    "haskell": {
      "command": "haskell-language-server-wrapper",
      "args": ["--lsp"],
      "rootPatterns": [
        ".stack.yaml",
        ".hie-bios",
        "BUILD.bazel",
        "cabal.config",
        "package.yaml"
      ],
      "filetypes": ["hs", "lhs", "haskell"]
    }
  }
}

如您所见,我使用的是两个自定义语言服务器。对象languageserver.csharp对象应该只与完成相关。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73057522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档