From 5e9fb3cc9045f9ef9a5c33ff6c295cf0438da39b Mon Sep 17 00:00:00 2001 From: Mathews Bryan <37884221+jmbryan4@users.noreply.github.com> Date: Tue, 21 Apr 2026 17:03:09 -0500 Subject: [PATCH] feat: replace csharp-ls with roslyn-language-server (#14463) Co-authored-by: Mathews --- packages/opencode/src/lsp/server.ts | 34 +++++++++++++++++++---------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts index 9182368063..a07e336864 100644 --- a/packages/opencode/src/lsp/server.ts +++ b/packages/opencode/src/lsp/server.ts @@ -705,32 +705,42 @@ export const CSharp: Info = { root: NearestRoot([".slnx", ".sln", ".csproj", "global.json"]), extensions: [".cs"], async spawn(root) { - let bin = which("csharp-ls") + let bin = which("roslyn-language-server") if (!bin) { if (!which("dotnet")) { - log.error(".NET SDK is required to install csharp-ls") + log.error(".NET SDK is required to install roslyn-language-server") return } if (Flag.OPENCODE_DISABLE_LSP_DOWNLOAD) return - log.info("installing csharp-ls via dotnet tool") - const proc = Process.spawn(["dotnet", "tool", "install", "csharp-ls", "--tool-path", Global.Path.bin], { - stdout: "pipe", - stderr: "pipe", - stdin: "pipe", - }) + log.info("installing roslyn-language-server via dotnet tool") + const proc = Process.spawn( + [ + "dotnet", + "tool", + "install", + "--global", + "roslyn-language-server", + "--prerelease", + ], + { + stdout: "pipe", + stderr: "pipe", + stdin: "pipe", + }, + ) const exit = await proc.exited if (exit !== 0) { - log.error("Failed to install csharp-ls") + log.error("Failed to install roslyn-language-server") return } - bin = path.join(Global.Path.bin, "csharp-ls" + (process.platform === "win32" ? ".exe" : "")) - log.info(`installed csharp-ls`, { bin }) + bin = path.join(Global.Path.bin, "roslyn-language-server" + (process.platform === "win32" ? ".exe" : "")) + log.info(`installed roslyn-language-server`, { bin }) } return { - process: spawn(bin, { + process: spawn(bin, ["--stdio", "--autoLoadProjects"], { cwd: root, }), }