Semver 3.0.0

A Semantic Version Library for .NET

Create, parse, and manipulate semantic version numbers with the SemVersion class and semantic version ranges with the SemVersionRange class. This library complies with v2.0.0 of the semantic versioning spec from semver.org.

API docs for the most recent release are available online at semver-nuget.org.

Parsing

var version = SemVersion.Parse("1.1.0-rc.1+e471d15", SemVersionStyles.Strict);

Constructing

var v1 = new SemVersion(1, 0);
var vNextRc = SemVersion.ParsedFrom(1, 1, 0, "rc.1");

Comparing

if (version.ComparePrecedenceTo(vNextRc) == 0)
    Console.WriteLine($"{version} has the same precedence as {vNextRc}");

if (version.CompareSortOrderTo(vNextRc) > 0)
    Console.WriteLine($"{version} sorts after {vNextRc}");

Outputs:

1.1.0-rc.1+e471d15 has the same precedence as 1.1.0-rc.1
1.1.0-rc.1+e471d15 sorts after 1.1.0-rc.1

Manipulating

Console.WriteLine($"Current: {version}");
if (version.IsPrerelease)
{
    Console.WriteLine($"Prerelease: {version.Prerelease}");
    Console.WriteLine($"Next release version is: {version.WithoutPrereleaseOrMetadata()}");
}

Outputs:

Current: 1.1.0-rc.1+e471d15
Prerelease: rc.1
Next release version is: 1.1.0

Version Ranges

var range = SemVersionRange.Parse("^1.0.0");
var prereleaseRange = SemVersionRange.ParseNpm("^1.0.0", includeAllPrerelease: true);
Console.WriteLine($"Range: {range}");
Console.WriteLine($"Prerelease range: {prereleaseRange}");
Console.WriteLine($"Range includes version {version}: {range.Contains(version)}");
Console.WriteLine($"Prerelease range includes version {version}: {prereleaseRange.Contains(version)}");

// Alternative: another way to call SemVersionRange.Contains(version)
version.Satisfies(range);

// Alternative: slower because it parses the range on every call
version.SatisfiesNpm("^1.0.0", includeAllPrerelease: true)

Outputs:

Range: 1.*
Prerelease range: *-* 1.*
Range includes version 1.1.0-rc.1+e471d15: False
Prerelease range includes version 1.1.0-rc.1+e471d15: True

Showing the top 20 packages that depend on Semver.

Packages Downloads
Aspire.Hosting.PostgreSQL
PostgreSQL® support for .NET Aspire.
4
Aspire.Hosting.MongoDB
MongoDB support for .NET Aspire.
3
Aspire.Hosting
Core abstractions for the .NET Aspire application model.
2
Aspire.Hosting.SqlServer
Microsoft SQL Server support for .NET Aspire.
1
Aspire.Hosting.Nats
NATS support for .NET Aspire.
1
Aspire.Hosting.AppHost
Core library and MSBuild logic for .NET Aspire AppHost projects.
1

https://github.com/WalkerCodeRanger/semver/releases/tag/v3.0.0

.NET 5.0

.NET Standard 2.0

.NET Standard 2.1

Version Downloads Last updated
3.0.0 1 08/03/2025
3.0.0-beta.2 1 08/03/2025
3.0.0-beta.1 2 08/04/2025
3.0.0-beta.0 2 08/04/2025
2.3.0 1 08/04/2025
2.3.0-beta.0 1 08/04/2025
2.3.0-alpha.0 2 08/03/2025
2.2.0 2 08/03/2025
2.2.0-rc.0 1 08/03/2025
2.1.0 0 03/19/2022
2.1.0-rc.1 2 08/03/2025
2.1.0-rc.0 3 08/03/2025
2.0.6 2 08/03/2025
2.0.5 2 08/03/2025
2.0.4 1 08/04/2025
2.0.3 1 08/04/2025
1.1.2 2 08/03/2025
1.1.1 1 08/04/2025
1.1.0 1 08/04/2025
1.0.5 2 08/03/2025
1.0.4 1 08/04/2025
1.0.3 2 08/03/2025
1.0.1 1 08/04/2025
1.0.0 1 08/04/2025