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环境准备
- 安装.NET 10 SDK:
curl -sSL https://dot.net/v1/dotnet-install.sh | bash -s -- --channel 10.0 - 添加环境变量到shell配置文件(
~/.bashrc或~/.zshrc):export PATH="$HOME/.dotnet:$HOME/.dotnet/tools:$PATH" export DOTNET_ROOT="$HOME/.dotnet" - 验证安装:
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
相关产品推荐
相关产品推荐

