oraios/serena · error · SolidLSPException

Failed to install .NET

Error message

Failed to install .NET {version} runtime using install script: {e.stderr if e.stderr else e}

What it means

If the dotnet install script subprocess exits non-zero (subprocess.CalledProcessError), install_dotnet_with_script wraps it in SolidLSPException including stderr. This means the download or extraction step of the .NET runtime failed.

Solutions

  1. Read the stderr in the exception for the root cause and fix accordingly (URL, proxy, disk)
  2. Check network connectivity/proxy settings (HTTPS_PROXY) and retry
  3. Install the .NET runtime manually via system package manager instead of the script
  4. On Windows, ensure pwsh (PowerShell 7+) is installed since the script requires it

Example fix

// before
curl -sSL https://dot.net/v1/dotnet-install.sh | bash  # blocked by proxy
// after
export HTTPS_PROXY=http://proxy.corp:8080
wget https://dot.net/v1/dotnet-install.sh && bash dotnet-install.sh --channel 8.0
Defensive patterns

Strategy: retry

Validate before calling

import urllib.request
urllib.request.urlopen("https://builds.dotnet.microsoft.com", timeout=10)  # connectivity check

Try / catch

try:
    path = util.install_dotnet_with_script(version)
except SolidLSPException as e:
    if "install script" in str(e):
        print("Check network/proxy; stderr:", e)
    raise

Prevention

When it happens

Trigger: dotnet-install.sh/dotnet-install.ps1 returning a non-zero exit code — download URLs unreachable (404/offline), TLS failures, unsupported OS/arch combination, or pwsh script errors.

Common situations: Corporate proxies blocking downloads; no internet access in CI; Microsoft CDN outage; unsupported Linux distro for the install script.

Related errors


AI-assisted analysis of oraios/serena@7fcbca7e62 (2026-08-29). Data as JSON: /api/errors/7da77bc12d3fbf2f. Report an issue: GitHub.

Appendix: source

Thrown at src/serena/util/dotnet.py:152

                    str(dotnet_dir),
                    "--runtime",
                    "dotnet",
                    "--no-path",
                ]

            # Run the install script
            log.info("Running .NET install script: %s", cmd)
            result = subprocess_run(cmd, capture_output=True, text=True, check=True)
            log.debug(f"Install script output: {result.stdout}")

            if not dotnet_exe.exists():
                raise SolidLSPException(f"dotnet executable not found at {dotnet_exe} after installation")

            log.info(f"Successfully installed .NET {version} runtime to {dotnet_exe}")
            return str(dotnet_exe)

        except subprocess.CalledProcessError as e:
            raise SolidLSPException(f"Failed to install .NET {version} runtime using install script: {e.stderr if e.stderr else e}") from e
        except Exception as e:
            message = f"Failed to install .NET {version} runtime: {e}"
            if is_windows and isinstance(e, FileNotFoundError):
                message += "; pwsh, i.e. PowerShell 7+, is required to install .NET runtime. Make sure pwsh is available on your system."
            raise SolidLSPException(message) from e

View on GitHub (pinned to 7fcbca7e62)