{"record":{"id":"13a1be917ad400f9","repo":"oraios/serena","slug":"no-url-specified-for-package-package-name-versio","errorCode":null,"errorMessage":"No URL specified for package {package_name} version {package_version}","messagePattern":"No URL specified for package (.+?) version (.+?)","errorType":"exception","errorClass":"SolidLSPException","httpStatus":null,"severity":"error","filePath":"src/solidlsp/language_servers/csharp_language_server.py","lineNumber":464,"sourceCode":"                        break\n                else:\n                    raise SolidLSPException(f\"Could not find language server files in package. Searched in {package_path}\")\n\n            # Copy files to cache directory\n            server_dir.mkdir(parents=True, exist_ok=True)\n            shutil.copytree(source_dir, server_dir, dirs_exist_ok=True)\n\n        def _download_nuget_package(self, dependency: RuntimeDependency) -> Path:\n            \"\"\"\n            Download a NuGet package from NuGet.org and extract it.\n            Returns the path to the extracted package directory.\n            \"\"\"\n            package_name = dependency.package_name\n            package_version = dependency.package_version\n            url = dependency.url\n\n            if url is None:\n                raise SolidLSPException(f\"No URL specified for package {package_name} version {package_version}\")\n\n            package_extract_dir = Path(self._ls_resources_dir) / \"temp_downloads\" / f\"{package_name}.{package_version}\"\n            projected_path = package_extract_dir / (dependency.extract_path or \"\") / ROSLYN_LONGEST_KNOWN_PACKAGE_MEMBER\n            if platform.system() == \"Windows\" and len(str(projected_path)) >= WINDOWS_MAX_PATH:\n                log.warning(\"Using a short temporary directory for Roslyn package extraction because the configured cache path is too deep\")\n                package_extract_dir = Path(tempfile.mkdtemp(prefix=\"serena-roslyn-\")) / package_extract_dir.name\n            package_extract_dir.parent.mkdir(parents=True, exist_ok=True)\n\n            try:\n                log.debug(f\"Downloading package from: {url}\")\n                FileUtils.download_and_extract_archive_verified(\n                    url,\n                    str(package_extract_dir),\n                    \"zip\",\n                    expected_sha256=dependency.sha256,\n                    allowed_hosts=dependency.allowed_hosts,\n                )\n","sourceCodeStart":446,"sourceCodeEnd":482,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/solidlsp/language_servers/csharp_language_server.py#L446-L482","documentation":"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.","triggerScenarios":"_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.","commonSituations":"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.","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"],"exampleFix":"// before\nRuntimeDependency(package_name='microsoft.codeanalysis.languageserver', package_version='4.x', url=None)\n// after\nRuntimeDependency(package_name='microsoft.codeanalysis.languageserver', package_version='4.x', url='https://www.nuget.org/api/v2/package/microsoft.codeanalysis.languageserver/4.x')","handlingStrategy":"validation","validationCode":"dep = collection.get_single_dep_for_current_platform()\nif not dep.get(\"url\"):\n    raise SystemExit(\n        f\"RuntimeDependency {dep.get('package_name')}@{dep.get('package_version')} has no url; \"\n        \"set it to https://www.nuget.org/api/v2/package/{package_name}/{package_version}\"\n    )\n","typeGuard":"def dep_has_download_url(dep) -> bool:\n    return bool(getattr(dep, \"url\", None)) and str(dep.url).startswith((\"http://\", \"https://\"))\n","tryCatchPattern":"try:\n    ls._ensure_server_installed()\nexcept SolidLSPException as e:\n    if \"No URL specified for package\" in str(e):\n        dep.url = f\"https://www.nuget.org/api/v2/package/{dep.package_name}/{dep.package_version}\"\n        ls._ensure_server_installed()\n    else:\n        raise\n","preventionTips":["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"],"tags":["csharp","nuget","configuration","missing-url"],"backgroundTag":"missing-download-url","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}