Semver 3.0.0

dotnet add package Semver --version 3.0.0                
NuGet\Install-Package Semver -Version 3.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Semver" Version="3.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Semver --version 3.0.0                
#r "nuget: Semver, 3.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Semver as a Cake Addin
#addin nuget:?package=Semver&version=3.0.0

// Install Semver as a Cake Tool
#tool nuget:?package=Semver&version=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
Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (108)

Showing the top 5 NuGet packages that depend on Semver:

Package Downloads
Pulumi

The Pulumi .NET SDK lets you write cloud programs in C#, F#, and VB.NET.

UmbracoCms.Core

Contains the core assemblies needed to run Umbraco Cms. This package only contains assemblies and can be used for package development. Use the UmbracoCms package to setup Umbraco in Visual Studio as an ASP.NET project.

Apprio.Enablement.Platform

Package Description

Apprio.Enablement.Telemetry.Exceptions

Package Description

Cake.SemVer

Cake Build addon to provide Semantice Versioning classes and aliases.

GitHub repositories (39)

Showing the top 5 popular GitHub repositories that depend on Semver:

Repository Stars
ChilliCream/graphql-platform
Welcome to the home of the Hot Chocolate GraphQL server for .NET, the Strawberry Shake GraphQL client for .NET and Nitro the awesome Monaco based GraphQL IDE.
dotnet/tye
Tye is a tool that makes developing, testing, and deploying microservices and distributed applications easier. Project Tye includes a local orchestrator to make developing microservices easier and the ability to deploy microservices to Kubernetes with minimal configuration.
LykosAI/StabilityMatrix
Multi-Platform Package Manager for Stable Diffusion
microsoft/onefuzz
A self-hosted Fuzzing-As-A-Service platform
betwixt-labs/bebop
🎷No ceremony, just code. Blazing fast, typesafe binary serialization.
Version Downloads Last updated
3.0.0 208,704 10/23/2024
3.0.0-beta.2 785 9/29/2024
3.0.0-beta.1 20,185 8/21/2023
3.0.0-beta.0 5,362 5/7/2023
2.3.0 4,236,745 2/21/2023
2.3.0-beta.0 2,754 12/28/2022
2.3.0-alpha.0 7,017 7/17/2022
2.2.0 1,993,911 6/12/2022
2.2.0-rc.0 1,524 5/15/2022
2.1.0 4,475,867 3/19/2022
2.1.0-rc.1 459 3/19/2022
2.1.0-rc.0 682 3/7/2022
2.0.6 7,585,416 12/28/2019
2.0.5 319,283 10/27/2019 2.0.5 is deprecated because it has critical bugs.
2.0.4 3,241,135 8/1/2016 2.0.4 is deprecated because it has critical bugs.
2.0.3 20,458 7/31/2016 2.0.3 is deprecated because it has critical bugs.
1.1.2 3,247,884 5/13/2014
1.1.1 3,978 11/24/2013
1.1.0 3,270 11/15/2013
1.0.5 2,770 7/1/2013
1.0.4 2,452 7/1/2013
1.0.3 2,577 1/10/2013
1.0.1 2,282 1/10/2013
1.0.0 3,757 1/9/2013