diff --git a/clr_loader/__init__.py b/clr_loader/__init__.py index e5fca2a..2a141b2 100644 --- a/clr_loader/__init__.py +++ b/clr_loader/__init__.py @@ -139,7 +139,7 @@ def get_coreclr( candidates = [ rt for rt in find_runtimes() if rt.name == "Microsoft.NETCore.App" ] - candidates.sort(key=lambda spec: spec.version, reverse=True) + candidates.sort(key=lambda spec: spec.version_info, reverse=True) if not candidates: raise RuntimeError("Failed to find a suitable runtime") diff --git a/clr_loader/util/runtime_spec.py b/clr_loader/util/runtime_spec.py index 89bf775..2e04c91 100644 --- a/clr_loader/util/runtime_spec.py +++ b/clr_loader/util/runtime_spec.py @@ -1,7 +1,7 @@ import json from dataclasses import dataclass from pathlib import Path -from typing import Any, Dict, TextIO +from typing import Any, Dict, TextIO, Tuple @dataclass @@ -12,14 +12,19 @@ class DotnetCoreRuntimeSpec: version: str path: Path + @property + def version_info(self) -> Tuple[int, int, int, str]: + base, _, suffix = self.version.partition("-") + major, minor, patch = base.split(".") + return (int(major), int(minor), int(patch), suffix) + @property def tfm(self) -> str: - return f"net{self.version[:3]}" + return f"net{self.version_info[0]}.{self.version_info[1]}" @property def floor_version(self) -> str: - major, minor, _ = self.version.split(".") - return f"{major}.{minor}.0" + return f"{self.version_info[0]}.{self.version_info[1]}.0" @property def runtime_config(self) -> Dict[str, Any]: