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
Actual behavior
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
First: System.Management.Automation.SemanticVersion is not SemVer v2 compliant
Second: PowerShell releases are using SemVer v2 syntax
Therefore:
$PSVersionTable.PSVersionis 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
-prereleaseand+patchas well as dotted versions like your6.0.0-beta.7Note that both the tests below return TRUE if $SemVer is Nuget.SemanticVersion:
Steps to reproduce
Expected behavior
Actual behavior
Environment data