Labels
bug, C#, language-server, Unity
Description
Summary
Serena's C# language server (via SolidLSP) attempts to install .NET 10.0 runtime, which doesn't exist yet (still in Preview), causing language server initialization to fail for Unity projects that require .NET 6.0/Standard 2.1 compatibility.
Environment
- OS: macOS 14.x (Apple Silicon ARM64)
- Serena: via Claude Code plugin (latest)
- Project: Unity 6000.3.5f2 (C# 9, .NET Standard 2.1)
- Installed .NET: 6.0.102 SDK + 6.0.2 Runtime (ARM64)
- OmniSharp: 1.39.15 (manually installed, ARM64)
Steps to Reproduce
- Install Serena plugin in Claude Code
- Create/open a Unity project (C# with .NET Standard 2.1 or .NET 6.0 target)
- Create
.serena/config.toml in project root:
[project]
name = "MyUnityProject"
[language_servers.csharp]
dotnet_version = "6.0"
path = "/path/to/manually/installed/omnisharp"
[language_servers.csharp.settings]
unity = true
solution = "MyUnityProject.sln"
- Activate project in Serena
- Attempt to use C# symbolic tools (e.g.,
get_symbols_overview)
Expected Behavior
- Serena should use the configured OmniSharp and .NET 6.0
- OR respect the project's target framework (.NET Standard 2.1 / .NET 6.0)
- C# language server should initialize successfully
Actual Behavior
Error log excerpt:
INFO solidlsp.language_servers.csharp_language_server:_install_dotnet_with_script:494
- Installing .NET 10.0 runtime using official Microsoft install script...
ERROR Failed to install .NET 10.0 runtime using install script:
Command '['bash', '...dotnet-install.sh', '--version', '10.0', ...]'
died with <Signals.SIGKILL: 9>.
Result:
- Language server manager fails to initialize
- All symbolic C# tools (
find_symbol, get_symbols_overview, etc.) fail with:
Error: The language server manager is not initialized
- Multiple bash processes spawn trying to install .NET 10.0 (4-7+ processes)
- Project becomes unusable for C# code intelligence
Root Cause Analysis
-
SolidLSP hardcoded .NET 10.0 requirement
- The
solidlsp package has hardcoded logic to install .NET 10.0
- Code path:
solidlsp/language_servers/csharp_language_server.py:_install_dotnet_with_script:494
- This runs before reading project-specific configuration
-
.NET 10.0 doesn't exist yet
- .NET 10 is currently in Preview, no stable release exists
- Official Microsoft installer fails when attempting
--version 10.0
-
Configuration is ignored
- Both global
~/.serena/serena_config.yml and project .serena/config.toml are read AFTER installation attempt
- Settings like
dotnet_version = "6.0", path = "...", and external_dotnet_runtime = true have no effect
-
Unity projects specifically affected
- Unity 2022+ uses .NET Standard 2.1 (equivalent to .NET 6.0)
- Unity projects cannot use .NET 10.0 even when it's released
- This affects a significant portion of C# developers using Serena
What I Tried (All Failed)
✅ Installed prerequisites manually:
- OmniSharp 1.39.15 for ARM64
- .NET 6.0 SDK (6.0.102) for ARM64
- Verified both work independently with
DOTNET_ROOT=/usr/local/share/dotnet
✅ Configured project-specific settings (.serena/config.toml):
[language_servers.csharp]
dotnet_version = "6.0"
path = "/Users/username/.local/bin/omnisharp/OmniSharp"
env = { DOTNET_ROOT = "/usr/local/share/dotnet" }
✅ Configured global settings (~/.serena/serena_config.yml):
ls_specific_settings:
csharp:
enabled: false # Tried to disable auto-installation
path: "/Users/username/.local/bin/omnisharp/OmniSharp"
dotnet_path: "/usr/local/share/dotnet/dotnet"
external_dotnet_runtime: true
dotnet_version: "6.0"
✅ Cleaned up multiple times:
- Removed
~/.serena/language_servers/static/CSharpLanguageServer/
- Killed all background installation processes
- Restarted Claude Code cleanly
❌ Result: SolidLSP still attempts .NET 10.0 installation on every startup
Related Issues
This appears to be the same class of problem as:
The pattern: Serena attempts to install newer .NET versions regardless of project requirements.
Impact
- All Unity developers cannot use Serena's C# language server
- All .NET 6.0/8.0 projects may fail if SolidLSP requires .NET 10.0
- Workaround required: Users must use VS Code + OmniSharp extension separately
Proposed Solutions
Option 1: Support Older .NET Versions (Preferred)
- Allow SolidLSP to work with .NET 6.0, 8.0, and 9.0
- Detect project target framework before choosing .NET version
- Unity projects → use .NET 6.0
- Modern projects → use .NET 8.0/9.0
Option 2: Respect Manual Configuration
- When
ls_specific_settings.csharp.path is provided, skip auto-installation entirely
- When
external_dotnet_runtime = true, skip .NET installation
- Read configuration BEFORE attempting any downloads
Option 3: Make .NET Version Configurable
- Allow
dotnet_version in config to override hardcoded version
- Default to .NET 8.0 (stable) instead of .NET 10.0 (preview)
- Validate version exists before attempting installation
Option 4: Fallback Strategy
- Try .NET 10.0 first
- On failure, fall back to .NET 8.0, then 6.0
- Use whatever .NET is already installed on the system
Additional Context
Why .NET 6.0 for Unity:
- Unity 2022+ uses .NET Standard 2.1 API compatibility
- Unity's C# compiler maps to roughly .NET 6.0 feature set
- OmniSharp 1.39.x works perfectly with .NET 6.0 for Unity projects
System Details:
$ dotnet --version
6.0.102
$ dotnet --list-runtimes
Microsoft.AspNetCore.App 6.0.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
$ arch
arm64
$ file /usr/local/share/dotnet/dotnet
/usr/local/share/dotnet/dotnet: Mach-O 64-bit executable arm64
Manual OmniSharp Test (Works):
$ DOTNET_ROOT=/usr/local/share/dotnet ~/.local/bin/omnisharp/OmniSharp --version
# Successfully starts, detects .NET 6.0, finds Unity solution
Logs
Serena Log Excerpt
INFO 2026-02-10 11:46:30,842 [Task-1:init_language_server_manager]
serena.project:create_language_server_manager:414
- Creating language server manager for /path/to/Unity/Project
INFO 2026-02-10 11:46:31,400 [StartLS:csharp]
serena.ls_manager:create_language_server:41
- Creating language server instance for /path/to/Unity/Project, language=csharp.
INFO 2026-02-10 11:46:31,446 [StartLS:csharp]
solidlsp.language_servers.csharp_language_server:_install_dotnet_with_script:494
- Installing .NET 10.0 runtime using official Microsoft install script...
ERROR 2026-02-10 11:46:42,177 [StartLS:csharp]
sensai.util.logging:__exit__:373
- Language server startup (language=csharp) failed after 10.777 seconds
ERROR 2026-02-10 11:46:42,178 [StartLS:csharp]
serena.ls_manager:start_language_server:101
- Error starting language server for language csharp:
Failed to install .NET 10.0 runtime using install script:
Command '['bash', '/Users/username/.serena/language_servers/static/CSharpLanguageServer/dotnet-runtime-10.0/dotnet-install.sh',
'--version', '10.0', '--install-dir', '/Users/username/.serena/language_servers/static/CSharpLanguageServer/dotnet-runtime-10.0',
'--runtime', 'dotnet', '--no-path']' died with <Signals.SIGKILL: 9>.
Request
Please update SolidLSP or Serena's C# language server integration to:
- Support .NET 6.0 and 8.0 (stable versions)
- Respect manual OmniSharp configuration when provided
- Detect project target framework before choosing .NET version
- OR allow disabling automatic .NET installation entirely
This would unblock all Unity developers and users with .NET 6.0/8.0 projects.
Workaround (For Others Experiencing This)
Until fixed, use VS Code with C# extension for IntelliSense, while using Claude Code for AI assistance. OmniSharp in VS Code works perfectly with the same Unity projects.
Thank you for this excellent tool! Looking forward to using Serena with Unity projects once this is resolved.
Labels
bug,C#,language-server,UnityDescription
Summary
Serena's C# language server (via SolidLSP) attempts to install .NET 10.0 runtime, which doesn't exist yet (still in Preview), causing language server initialization to fail for Unity projects that require .NET 6.0/Standard 2.1 compatibility.
Environment
Steps to Reproduce
.serena/config.tomlin project root:get_symbols_overview)Expected Behavior
Actual Behavior
Error log excerpt:
Result:
find_symbol,get_symbols_overview, etc.) fail with:Root Cause Analysis
SolidLSP hardcoded .NET 10.0 requirement
solidlsppackage has hardcoded logic to install .NET 10.0solidlsp/language_servers/csharp_language_server.py:_install_dotnet_with_script:494.NET 10.0 doesn't exist yet
--version 10.0Configuration is ignored
~/.serena/serena_config.ymland project.serena/config.tomlare read AFTER installation attemptdotnet_version = "6.0",path = "...", andexternal_dotnet_runtime = truehave no effectUnity projects specifically affected
What I Tried (All Failed)
✅ Installed prerequisites manually:
DOTNET_ROOT=/usr/local/share/dotnet✅ Configured project-specific settings (
.serena/config.toml):✅ Configured global settings (
~/.serena/serena_config.yml):✅ Cleaned up multiple times:
~/.serena/language_servers/static/CSharpLanguageServer/❌ Result: SolidLSP still attempts .NET 10.0 installation on every startup
Related Issues
This appears to be the same class of problem as:
The pattern: Serena attempts to install newer .NET versions regardless of project requirements.
Impact
Proposed Solutions
Option 1: Support Older .NET Versions (Preferred)
Option 2: Respect Manual Configuration
ls_specific_settings.csharp.pathis provided, skip auto-installation entirelyexternal_dotnet_runtime = true, skip .NET installationOption 3: Make .NET Version Configurable
dotnet_versionin config to override hardcoded versionOption 4: Fallback Strategy
Additional Context
Why .NET 6.0 for Unity:
System Details:
Manual OmniSharp Test (Works):
Logs
Serena Log Excerpt
Request
Please update SolidLSP or Serena's C# language server integration to:
This would unblock all Unity developers and users with .NET 6.0/8.0 projects.
Workaround (For Others Experiencing This)
Until fixed, use VS Code with C# extension for IntelliSense, while using Claude Code for AI assistance. OmniSharp in VS Code works perfectly with the same Unity projects.
Thank you for this excellent tool! Looking forward to using Serena with Unity projects once this is resolved.