oraios/serena · error · SolidLSPException
No URL specified for package {package_name} version {package
Error message
No URL specified for package {package_name} version {package_version} What it means
Raised by _download_nuget_package when the runtime dependency for the Roslyn language server has url=None. The downloader needs a direct download URL for the NuGet package; a dependency definition without one cannot be fetched.
Source
Thrown at src/solidlsp/language_servers/csharp_language_server.py:464
break
else:
raise SolidLSPException(f"Could not find language server files in package. Searched in {package_path}")
# Copy files to cache directory
server_dir.mkdir(parents=True, exist_ok=True)
shutil.copytree(source_dir, server_dir, dirs_exist_ok=True)
def _download_nuget_package(self, dependency: RuntimeDependency) -> Path:
"""
Download a NuGet package from NuGet.org and extract it.
Returns the path to the extracted package directory.
"""
package_name = dependency.package_name
package_version = dependency.package_version
url = dependency.url
if url is None:
raise SolidLSPException(f"No URL specified for package {package_name} version {package_version}")
package_extract_dir = Path(self._ls_resources_dir) / "temp_downloads" / f"{package_name}.{package_version}"
projected_path = package_extract_dir / (dependency.extract_path or "") / ROSLYN_LONGEST_KNOWN_PACKAGE_MEMBER
if platform.system() == "Windows" and len(str(projected_path)) >= WINDOWS_MAX_PATH:
log.warning("Using a short temporary directory for Roslyn package extraction because the configured cache path is too deep")
package_extract_dir = Path(tempfile.mkdtemp(prefix="serena-roslyn-")) / package_extract_dir.name
package_extract_dir.parent.mkdir(parents=True, exist_ok=True)
try:
log.debug(f"Downloading package from: {url}")
FileUtils.download_and_extract_archive_verified(
url,
str(package_extract_dir),
"zip",
expected_sha256=dependency.sha256,
allowed_hosts=dependency.allowed_hosts,
)
View on GitHub (pinned to 7fcbca7e62)
Solutions
- Add the direct NuGet.org download URL to the RuntimeDependency entry, e.g. https://www.nuget.org/api/v2/package/{package_name}/{package_version}
- Restore the default runtime-dependency configuration if it was overridden
- Upgrade the library if this is a missing-URL bug for your platform
Example fix
// before RuntimeDependency(package_name='microsoft.codeanalysis.languageserver', package_version='4.x', url=None) // after RuntimeDependency(package_name='microsoft.codeanalysis.languageserver', package_version='4.x', url='https://www.nuget.org/api/v2/package/microsoft.codeanalysis.languageserver/4.x')
Defensive patterns
Strategy: validation
Validate before calling
dep = collection.get_single_dep_for_current_platform()
if not dep.get("url"):
raise SystemExit(
f"RuntimeDependency {dep.get('package_name')}@{dep.get('package_version')} has no url; "
"set it to https://www.nuget.org/api/v2/package/{package_name}/{package_version}"
)
Type guard
def dep_has_download_url(dep) -> bool:
return bool(getattr(dep, "url", None)) and str(dep.url).startswith(("http://", "https://"))
Try / catch
try:
ls._ensure_server_installed()
except SolidLSPException as e:
if "No URL specified for package" in str(e):
dep.url = f"https://www.nuget.org/api/v2/package/{dep.package_name}/{dep.package_version}"
ls._ensure_server_installed()
else:
raise
Prevention
- Always populate the url field in custom RuntimeDependency entries
- Copy URLs from the default dependency table instead of writing new ones from scratch
- Add a config-load assertion that all platform deps define a non-empty url
- Keep the library version in sync with dependency-table schema expectations
When it happens
Trigger: _ensure_language_server -> _download_nuget_package with a RuntimeDependency whose 'url' field is None — e.g. a custom/overridden dependency entry, or a platform entry that only defines package_name/package_version.
Common situations: Users overriding the default runtime-dependency table and forgetting the url, or a library version where the URL wasn't populated for the current platform.
Related errors
- Roslyn Language Server DLL not found after extraction
- Could not find language server files in package. Searched in
- Failed to download package {package_name} version {package_v
- No SLN file found in repository
- Dashboard is not running.
AI-assisted analysis of oraios/serena@7fcbca7e62 (2026-08-29).
Data as JSON: /api/errors/13a1be917ad400f9.
Report an issue: GitHub.