Skip to content

SMA SemanticVersion not SemVer 2 compliant #5004

@Jaykul

Description

@Jaykul

First: System.Management.Automation.SemanticVersion is not SemVer v2 compliant

Second: PowerShell releases are using SemVer v2 syntax

Therefore: $PSVersionTable.PSVersion is truncated and thus broken, as pre-release versions cannot be compared to each other (the only useful assertion possible is that the PSVersion is -lt "6.0.0")

You should be using (an implementation like) Nuget.Core's Nuget.SemanticVersion which handles -prerelease and +patch as well as dotted versions like your 6.0.0-beta.7

Note that both the tests below return TRUE if $SemVer is Nuget.SemanticVersion:

Steps to reproduce

$SemVer = [System.Management.Automation.SemanticVersion]
("6.0.0-beta.10" -as $SemVer) -gt ("6.0.0-beta.7" -as $SemVer)
("6.0.0+fixes" -as $SemVer) -gt ("6.0.0-beta" -as $SemVer)

Expected behavior

True
True

Actual behavior

False
False

Environment data

> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.0.0-beta
PSEdition                      Core
GitCommitId                    v6.0.0-beta.7
OS                             Microsoft Windows 10.0.15063
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Metadata

Metadata

Assignees

Labels

Resolution-FixedThe issue is fixed.WG-Enginecore PowerShell engine, interpreter, and runtime

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions