getVersionSync method

  1. @override
Version getVersionSync()
override

Returns the version of executable.

Implementation

@override
Version getVersionSync() {
  // .NET SDK:
  //  Version:           8.0.404
  //  Commit:            7b190310f2
  //  Workload version:  8.0.400-manifests.d73e769d
  //  MSBuild version:   17.11.9+a69bbaaf5
  //
  // Laufzeitumgebung:
  //  OS Name:     Windows
  //  OS Version:  10.0.19045
  //  OS Platform: Windows
  //  RID:         win-x64
  //  Base Path:   C:\Program Files\dotnet\sdk\8.0.404\
  //
  // Installierte .NET-Workloads:
  // Konfiguriert für die Verwendung loose manifests beim Installieren neuer
  // Manifeste.
  //  [aspire]
  //    Installationsquelle: VS 17.10.35027.167
  //    Manifestversion:    8.0.0/8.0.100
  //    Manifestpfad:       C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.aspire\8.0.0\WorkloadManifest.json
  //    Installationstyp:        FileBased
  //
  //  [wasm-tools-net6]
  //    Installationsquelle: VS 17.10.35027.167
  //    Manifestversion:    8.0.11/8.0.100
  //    Manifestpfad:       C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.workload.mono.toolchain.net6\8.0.11\WorkloadManifest.json
  //    Installationstyp:        FileBased
  //
  //  [wasm-tools-net7]
  //    Installationsquelle: VS 17.10.35027.167
  //    Manifestversion:    8.0.11/8.0.100
  //    Manifestpfad:       C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.workload.mono.toolchain.net7\8.0.11\WorkloadManifest.json
  //    Installationstyp:        FileBased
  //
  //
  // Host:
  //   Version:      8.0.11
  //   Architecture: x64
  //   Commit:       9cb3b725e3
  //
  // .NET SDKs installed:
  //   8.0.404 [C:\Program Files\dotnet\sdk]
  //
  // .NET runtimes installed:
  //   Microsoft.AspNetCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  //   Microsoft.AspNetCore.App 6.0.32 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  //   Microsoft.AspNetCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  //   Microsoft.AspNetCore.App 8.0.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  //   Microsoft.AspNetCore.App 8.0.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  //   Microsoft.NETCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  //   Microsoft.NETCore.App 6.0.29 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  //   Microsoft.NETCore.App 6.0.32 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  //   Microsoft.NETCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  //   Microsoft.NETCore.App 8.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  //   Microsoft.NETCore.App 8.0.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  //   Microsoft.WindowsDesktop.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  //   Microsoft.WindowsDesktop.App 6.0.29 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  //   Microsoft.WindowsDesktop.App 6.0.32 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  //   Microsoft.WindowsDesktop.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  //   Microsoft.WindowsDesktop.App 8.0.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  //   Microsoft.WindowsDesktop.App 8.0.11 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  //
  // Other architectures found:
  //   x86   [C:\Program Files (x86)\dotnet]
  //     registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]
  //
  // Environment variables:
  //   Not set
  //
  // global.json file:
  //   Not found
  //
  // Learn more:
  //   https://aka.ms/dotnet/info
  //
  // Download .NET:
  //   https://aka.ms/dotnet/download
  final infoLines = runSync(["--info"]).stdout.toString().split("\n");

  // Only interested in 'Host:' section
  final hostLineIdx = infoLines.indexWhere(
    RegExp(
      r"^Host:$",
      multiLine: true,
    ).hasMatch,
  );

  final rawVersion = RegExp(r"Version:\s*(\d+\.\d+\.\d+)\s*")
      .firstMatch(infoLines[hostLineIdx + 1])![1]!;

  return Version.parse(rawVersion);
}