You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL Ubuntu下Neovim的Roslyn/.NET配置故障及Blazor工作流求助

Neovim下.NET/Blazor开发环境搭建与问题解决

问题针对性解决方案

1. .NET 10安装后dotnet sdk check仅显示9.0.112

  • 执行dotnet --list-sdks确认.NET 10是否真的安装成功,若未列出,重新运行官方安装脚本并添加--force参数覆盖安装:
    curl -sSL https://dot.net/v1/dotnet-install.sh | bash -s -- --channel 10.0 --force
    
  • 检查WSL环境变量,执行echo $PATH查看$HOME/.dotnet是否在PATH序列前端。若不在,编辑~/.bashrc或~/.zshrc添加:
    export PATH="$HOME/.dotnet:$HOME/.dotnet/tools:$PATH"
    
    执行source ~/.bashrc(或对应shell配置文件)使配置生效。

2. Predefined type 'system.boolean' is not defined or imported全局错误

  • 在终端执行dotnet clean && dotnet restore && dotnet build,清理项目编译缓存并重新生成,确认项目本身可正常编译。
  • 执行:LspInfo查看当前缓冲区的LSP状态,确认Roslyn LSP已正确附加到C#/Blazor文件。
  • 卸载rzls或Roslyn其中一个,避免版本冲突导致的引用加载异常。

3. Roslyn LSP提示'Microsoft.CodeAnalysis.LanguageServer' is not executable

  • 确认Mason安装的Roslyn路径(默认在~/.local/share/nvim/mason/packages/roslyn),检查该目录下是否存在Microsoft.CodeAnalysis.LanguageServer.dll。
  • 修改nvim-lspconfig的Roslyn配置,明确指定用dotnet运行该DLL:
    require('lspconfig').roslyn_ls.setup({
      cmd = {
        'dotnet',
        vim.fn.expand('~/.local/share/nvim/mason/packages/roslyn/Microsoft.CodeAnalysis.LanguageServer.dll')
      },
      filetypes = { 'cs', 'razor', 'cshtml' },
      settings = {
        roslyn = {
          enableAnalyzersSupport = true,
          enableDecompilationSupport = true
        }
      }
    })
    
  • 移除Mason配置中的rzls,避免与Roslyn LSP功能重叠冲突。

完整.NET/Blazor开发工作流搭建步骤

一、WSL Ubuntu 24.04环境准备

  1. 安装.NET 10 SDK:
    curl -sSL https://dot.net/v1/dotnet-install.sh | bash -s -- --channel 10.0
    
  2. 添加环境变量到shell配置文件(~/.bashrc或~/.zshrc):
    export PATH="$HOME/.dotnet:$HOME/.dotnet/tools:$PATH"
    export DOTNET_ROOT="$HOME/.dotnet"
    
  3. 验证安装:
    dotnet --version
    dotnet --list-sdks
    

二、Neovim插件配置(Lazy.nvim)

1. LSP核心插件配置

return {
  "neovim/nvim-lspconfig",
  event = { "BufReadPre", "BufNewFile" },
  dependencies = {
    { "mason-org/mason.nvim", cmd = "Mason" },
    { "mason-org/mason-lspconfig.nvim" },
  },
  config = function()
    require("mason").setup({
      registries = { "github:mason-org/mason-registry" },
      ensure_installed = {
        "lua-language-server",
        "roslyn",
        "csharpier",
        "html-lsp",
        "css-lsp",
        "tailwindcss",
        "typescript-language-server"
      }
    })

    require("mason-lspconfig").setup({ automatic_installation = true })

    -- Roslyn LSP配置
    require('lspconfig').roslyn_ls.setup({
      cmd = {
        "dotnet",
        vim.fn.expand("~/.local/share/nvim/mason/packages/roslyn/Microsoft.CodeAnalysis.LanguageServer.dll")
      },
      filetypes = { "cs", "razor", "cshtml" },
      settings = {
        roslyn = {
          enableAnalyzersSupport = true,
          enableDecompilationSupport = true
        }
      }
    })

    -- 其他辅助LSP配置
    require('lspconfig').tailwindcss.setup({})
    require('lspconfig').html.setup({})
  end
}

2. 代码格式化配置(以conform.nvim为例)

return {
  "stevearc/conform.nvim",
  opts = {
    formatters_by_ft = {
      cs = { "csharpier" },
      razor = { "csharpier" },
      cshtml = { "prettier" },
      html = { "prettier" },
      css = { "prettier" }
    },
    format_on_save = {
      timeout_ms = 500,
      lsp_fallback = true
    }
  }
}

3. 语法高亮配置(nvim-treesitter)

return {
  "nvim-treesitter/nvim-treesitter",
  build = ":TSUpdate",
  opts = {
    ensure_installed = { "c_sharp", "razor", "html", "css", "lua" },
    highlight = { enable = true },
    indent = { enable = true }
  }
}

三、Blazor开发优化

  • 确保Roslyn LSP的filetypes包含razor和cshtml,实现Blazor文件的代码提示与诊断。
  • 运行Blazor项目时,在Neovim中用终端插件(如toggleterm)执行dotnet watch run,实现热重载。

内容的提问来源于stack exchange,提问作者Carlos Saraiva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 00:05:54