Skip to main content

SemanticVersion class

Namespace: Velopack

A semantic version implementation that supports SemVer2 with an optional 4th revision component for backwards compatibility with NuGet-style version numbers.

public class SemanticVersion : IEquatable<SemanticVersion>, IComparable<SemanticVersion>, IComparable

Implements: IEquatable<SemanticVersion>, IComparable<SemanticVersion>, IComparable

Constructors

ConstructorSummary
SemanticVersionCreates a new SemanticVersion.
SemanticVersionCreates a new SemanticVersion from a traditional 4-part Version.
SemanticVersionCreates a new SemanticVersion with a revision component.

SemanticVersion(major, minor, patch, prerelease, metadata)

public SemanticVersion(int major, int minor, int patch, string prerelease = "", string metadata = "")

Creates a new SemanticVersion.

Parameters

NameTypeDescription
majorintThe major version number.
minorintThe minor version number.
patchintThe patch version number.
prereleasestringThe pre-release label (e.g. "beta.1"), or empty/null for a stable release.
metadatastringThe build metadata string, or empty/null for no metadata.

SemanticVersion(version, prerelease, metadata)

public SemanticVersion(Version version, string prerelease = "", string metadata = "")

Creates a new SemanticVersion from a traditional 4-part Version.

Parameters

NameTypeDescription
versionVersionThe version containing major, minor, patch, and revision.
prereleasestringThe pre-release label (e.g. "beta.1"), or empty/null for a stable release.
metadatastringThe build metadata string, or empty/null for no metadata.

SemanticVersion(major, minor, patch, revision, prerelease, metadata)

public SemanticVersion(int major, int minor, int patch, int revision, string prerelease = "", string metadata = "")

Creates a new SemanticVersion with a revision component.

Parameters

NameTypeDescription
majorintThe major version number.
minorintThe minor version number.
patchintThe patch version number.
revisionintThe fourth version component.
prereleasestringThe pre-release label, or empty/null for a stable release.
metadatastringThe build metadata string, or empty/null for no metadata.

Properties

PropertySummary
MajorThe major version component.
MinorThe minor version component.
PatchThe patch version component.
RevisionThe optional fourth version component, or 0 if not specified.
VersionA basic four-part version ignoring release labels and metadata.
ReleaseThe full pre-release label string (e.g. "beta.1"), or empty string if not a pre-release.
ReleaseLabelsThe dot-separated pre-release identifiers.
IsPrereleaseTrue if this version has a pre-release label.
MetadataThe build metadata string, or empty string if none.
HasMetadataTrue if this version has build metadata.

Major

public int Major { get; }

The major version component.

Minor

public int Minor { get; }

The minor version component.

Patch

public int Patch { get; }

The patch version component.

Revision

public int Revision { get; }

The optional fourth version component, or 0 if not specified.

Version

public Version Version { get; }

A basic four-part version ignoring release labels and metadata.

Release

public string Release { get; }

The full pre-release label string (e.g. "beta.1"), or empty string if not a pre-release.

ReleaseLabels

public IEnumerable<string> ReleaseLabels { get; }

The dot-separated pre-release identifiers.

IsPrerelease

public bool IsPrerelease { get; }

True if this version has a pre-release label.

Metadata

public string Metadata { get; }

The build metadata string, or empty string if none.

HasMetadata

public bool HasMetadata { get; }

True if this version has build metadata.

Methods

MethodSummary
ParseParse a version string into a SemanticVersion. Throws ArgumentException on invalid input.
TryParseTry to parse a version string. Returns false if the string is not a valid semantic version.
CompareByVersionCompares two versions by Major.Minor.Patch.Revision only, ignoring pre-release and metadata.
ToFullStringReturns the full version string including metadata (e.g. "1.2.3-beta+build").
ToNormalizedStringReturns the normalized version string without metadata (e.g. "1.2.3-beta").
ToString
CompareTo
CompareTo
Equals
Equals
GetHashCode

Parse(value)

public static SemanticVersion Parse(string value)

Parse a version string into a SemanticVersion. Throws ArgumentException on invalid input.

Parameters

NameTypeDescription
valuestring

Returns SemanticVersion

TryParse(value, version)

public static bool TryParse(string? value, out SemanticVersion? version)

Try to parse a version string. Returns false if the string is not a valid semantic version.

Parameters

NameTypeDescription
valuestring
versionSemanticVersion

Returns bool

CompareByVersion(a, b)

public static int CompareByVersion(SemanticVersion? a, SemanticVersion? b)

Compares two versions by Major.Minor.Patch.Revision only, ignoring pre-release and metadata.

Parameters

NameTypeDescription
aSemanticVersion
bSemanticVersion

Returns int

ToFullString()

public string ToFullString()

Returns the full version string including metadata (e.g. "1.2.3-beta+build").

Returns string

ToNormalizedString()

public string ToNormalizedString()

Returns the normalized version string without metadata (e.g. "1.2.3-beta").

Returns string

ToString()

public override string ToString()

Returns string

CompareTo(other)

public int CompareTo(SemanticVersion? other)

Parameters

NameTypeDescription
otherSemanticVersion

Returns int

CompareTo(obj)

public int CompareTo(object? obj)

Parameters

NameTypeDescription
objobject

Returns int

Equals(other)

public bool Equals(SemanticVersion? other)

Parameters

NameTypeDescription
otherSemanticVersion

Returns bool

Equals(obj)

public override bool Equals(object? obj)

Parameters

NameTypeDescription
objobject

Returns bool

GetHashCode()

public override int GetHashCode()

Returns int

Operators

OperatorSummary
operator ==Equality operator.
operator !=Inequality operator.
operator <Less-than operator.
operator >Greater-than operator.
operator <=Less-than-or-equal operator.
operator >=Greater-than-or-equal operator.

operator ==(left, right)

public static bool operator ==(SemanticVersion? left, SemanticVersion? right)

Equality operator.

Parameters

NameTypeDescription
leftSemanticVersion
rightSemanticVersion

Returns bool

operator !=(left, right)

public static bool operator !=(SemanticVersion? left, SemanticVersion? right)

Inequality operator.

Parameters

NameTypeDescription
leftSemanticVersion
rightSemanticVersion

Returns bool

operator <(left, right)

public static bool operator <(SemanticVersion? left, SemanticVersion? right)

Less-than operator.

Parameters

NameTypeDescription
leftSemanticVersion
rightSemanticVersion

Returns bool

operator >(left, right)

public static bool operator >(SemanticVersion? left, SemanticVersion? right)

Greater-than operator.

Parameters

NameTypeDescription
leftSemanticVersion
rightSemanticVersion

Returns bool

operator <=(left, right)

public static bool operator <=(SemanticVersion? left, SemanticVersion? right)

Less-than-or-equal operator.

Parameters

NameTypeDescription
leftSemanticVersion
rightSemanticVersion

Returns bool

operator >=(left, right)

public static bool operator >=(SemanticVersion? left, SemanticVersion? right)

Greater-than-or-equal operator.

Parameters

NameTypeDescription
leftSemanticVersion
rightSemanticVersion

Returns bool


Generated from Velopack 1.1.1