Skip to content

Side by side workload manifests with "non standard" semver results in exception string in dotnet --info output #33974

@pjcollins

Description

@pjcollins

Describe the bug

I'm testing some Android workload MSIs produced with side by side manifest support enabled.

The workload semver generated for this test branch uses our CI syntax, and the dotnet --info command shows a stack trace when trying to print info about this workload install:

.NET workloads installed:
 [android]
   Installation Source: SDK 8.0.100-preview.7, VS 17.7.33808.371
   Manifest Version:    34.0.0-ci.dev-pjc-sxs-wl-versions.366/microsoft.net.sdk.android
   Manifest Path:       C:\Program Files\dotnet\sdk-manifests\8.0.100-preview.7\microsoft.net.sdk.android\34.0.0-ci.dev-pjc-sxs-wl-versions.366\WorkloadManifest.json
   Install Type:System.FormatException: The specified version does not contain a valid major, minor, and patch version: 'microsoft.net.sdk.android'.
   at Microsoft.Deployment.DotNet.Releases.ReleaseVersion.TryParse(String input, Boolean throwOnFailure, ReleaseVersion& version)
   at Microsoft.Deployment.DotNet.Releases.ReleaseVersion.Parse(String input)
   at Microsoft.Deployment.DotNet.Releases.ReleaseVersion..ctor(String version)
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkFeatureBand..ctor(String version)
   at Microsoft.DotNet.Cli.WorkloadCommandParser.ShowWorkloadsInfo(ParseResult parseResult, IWorkloadInfoHelper workloadInfoHelper, IReporter reporter, String dotnetDir)
   at Microsoft.DotNet.Cli.CommandLineInfo.PrintInfo()
   at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
   at Microsoft.DotNet.Cli.Program.Main(String[] args)

To Reproduce

  1. Installed a daily dotnet/installer build

  2. Overlay Android workload manifest files into the following path:

    C:\Program Files\dotnet\sdk-manifests\8.0.100-preview.7\microsoft.net.sdk.android\34.0.0-ci.dev-pjc-sxs-wl-versions.366

  3. Install the android workload associated with the manifests in the path above

Full dotnet --info output:

.NET SDK:
 Version:   8.0.100-preview.7.23362.2
 Commit:    09ff810b1b

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.22621
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\8.0.100-preview.7.23362.2\

.NET workloads installed:
 [android]
   Installation Source: SDK 8.0.100-preview.7, VS 17.7.33808.371
   Manifest Version:    34.0.0-ci.dev-pjc-sxs-wl-versions.366/microsoft.net.sdk.android
   Manifest Path:       C:\Program Files\dotnet\sdk-manifests\8.0.100-preview.7\microsoft.net.sdk.android\34.0.0-ci.dev-pjc-sxs-wl-versions.366\WorkloadManifest.json
   Install Type:System.FormatException: The specified version does not contain a valid major, minor, and patch version: 'microsoft.net.sdk.android'.
   at Microsoft.Deployment.DotNet.Releases.ReleaseVersion.TryParse(String input, Boolean throwOnFailure, ReleaseVersion& version)
   at Microsoft.Deployment.DotNet.Releases.ReleaseVersion.Parse(String input)
   at Microsoft.Deployment.DotNet.Releases.ReleaseVersion..ctor(String version)
   at Microsoft.NET.Sdk.WorkloadManifestReader.SdkFeatureBand..ctor(String version)
   at Microsoft.DotNet.Cli.WorkloadCommandParser.ShowWorkloadsInfo(ParseResult parseResult, IWorkloadInfoHelper workloadInfoHelper, IReporter reporter, String dotnetDir)
   at Microsoft.DotNet.Cli.CommandLineInfo.PrintInfo()
   at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
   at Microsoft.DotNet.Cli.Program.Main(String[] args)

Host:
  Version:      8.0.0-preview.7.23361.9
  Architecture: x64
  Commit:       e70f0dfc1a

.NET SDKs installed:
  7.0.400-preview.23274.1 [C:\Program Files\dotnet\sdk]
  8.0.100-preview.7.23362.2 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.16 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 7.0.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 8.0.0-preview.7.23361.26 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.16 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 7.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 8.0.0-preview.7.23361.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 6.0.16 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 7.0.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 8.0.0-preview.7.23361.7 [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

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions