McSherry.SemanticVersioning
1.4.1
A comprehensive library for working with Semantic Versions (2.0.0), version ranges (node-semver v6.0.0), and Monotonic Versions (1.2).
Install-Package McSherry.SemanticVersioning -Version 1.4.1
dotnet add package McSherry.SemanticVersioning --version 1.4.1
<PackageReference Include="McSherry.SemanticVersioning" Version="1.4.1" />
paket add McSherry.SemanticVersioning --version 1.4.1
#r "nuget: McSherry.SemanticVersioning, 1.4.1"
// Install McSherry.SemanticVersioning as a Cake Addin #addin nuget:?package=McSherry.SemanticVersioning&version=1.4.1 // Install McSherry.SemanticVersioning as a Cake Tool #tool nuget:?package=McSherry.SemanticVersioning&version=1.4.1
Semantic Versioning for .NET 
McSherry.SemanticVersioning
is a comprehensive library for working with
Semantic Versions. It takes care of parsing, comparing, formatting, and filtering
and is intended as an easy-to-use, plug-and-play component of self-updating
software, package managers, and any other software that needs to work with
semantic versions.
Features
- Full support for Semantic Versioning (2.0.0) and Monotonic Versioning (1.2)
- Practically full support* for
node-semver
version ranges (up to v6.0.0) - Provides parsing, comparison, and formatting
- Flexible and configurable parsing to suit nearly any application
- Targets .NET 5, .NET Core 1.0/2.1/3.1, .NET Standard 1.0, and .NET Framework 4.5/4.6
- Common Language Specification (CLS) compliant
Getting Started
Installation is simple, as the library is available via NuGet. To install,
use the following from the NuGet Package Manager Console:
Install-Package McSherry.SemanticVersioning
Once installed, just import the McSherry.SemanticVersioning
namespace and
you're all set. Here's a small example to get you started:
Basic comparison
// The version we'll be comparing against.
var comparand = (SemanticVersion)"1.7.0";
while (true)
{
Console.Write("Enter a version number: ");
var versionStr = Console.ReadLine();
SemanticVersion userVersion;
if (!SemanticVersion.TryParse(versionStr, out userVersion))
Console.WriteLine("Uh oh! That's not a valid version!");
else if (userVersion > comparand)
Console.WriteLine($"Higher precedence than {comparand}!");
else if (userVersion < comparand)
Console.WriteLine($"Lower precedence than {comparand}!");
else
Console.WriteLine($"Equal precedence to {comparand}!");
Console.WriteLine();
}
Version range comparison
using McSherry.SemanticVersioning.Ranges;
// The range of versions we want to accept.
var range = new VersionRange("1.7.x || 1.8.x");
while (true)
{
Console.Write("Enter a version number: ");
var versionStr = Console.ReadLine();
if (!SemanticVersion.TryParse(versionStr, out var result))
{
Console.WriteLine("That's not a valid version!");
}
else
{
Console.WriteLine($"Acceptable? {range.SatisfiedBy(result)}.");
}
Console.WriteLine();
}
Contributing
Contributions are welcome, especially to documentation (both code comments
and the markdown documentation).
Licence Information
The project is licensed under the MIT licence.
Copyright © 2015-21 Liam McSherry.
Semantic Versioning for .NET 
McSherry.SemanticVersioning
is a comprehensive library for working with
Semantic Versions. It takes care of parsing, comparing, formatting, and filtering
and is intended as an easy-to-use, plug-and-play component of self-updating
software, package managers, and any other software that needs to work with
semantic versions.
Features
- Full support for Semantic Versioning (2.0.0) and Monotonic Versioning (1.2)
- Practically full support* for
node-semver
version ranges (up to v6.0.0) - Provides parsing, comparison, and formatting
- Flexible and configurable parsing to suit nearly any application
- Targets .NET 5, .NET Core 1.0/2.1/3.1, .NET Standard 1.0, and .NET Framework 4.5/4.6
- Common Language Specification (CLS) compliant
Getting Started
Installation is simple, as the library is available via NuGet. To install,
use the following from the NuGet Package Manager Console:
Install-Package McSherry.SemanticVersioning
Once installed, just import the McSherry.SemanticVersioning
namespace and
you're all set. Here's a small example to get you started:
Basic comparison
// The version we'll be comparing against.
var comparand = (SemanticVersion)"1.7.0";
while (true)
{
Console.Write("Enter a version number: ");
var versionStr = Console.ReadLine();
SemanticVersion userVersion;
if (!SemanticVersion.TryParse(versionStr, out userVersion))
Console.WriteLine("Uh oh! That's not a valid version!");
else if (userVersion > comparand)
Console.WriteLine($"Higher precedence than {comparand}!");
else if (userVersion < comparand)
Console.WriteLine($"Lower precedence than {comparand}!");
else
Console.WriteLine($"Equal precedence to {comparand}!");
Console.WriteLine();
}
Version range comparison
using McSherry.SemanticVersioning.Ranges;
// The range of versions we want to accept.
var range = new VersionRange("1.7.x || 1.8.x");
while (true)
{
Console.Write("Enter a version number: ");
var versionStr = Console.ReadLine();
if (!SemanticVersion.TryParse(versionStr, out var result))
{
Console.WriteLine("That's not a valid version!");
}
else
{
Console.WriteLine($"Acceptable? {range.SatisfiedBy(result)}.");
}
Console.WriteLine();
}
Contributing
Contributions are welcome, especially to documentation (both code comments
and the markdown documentation).
Licence Information
The project is licensed under the MIT licence.
Copyright © 2015-21 Liam McSherry.
Release Notes
This patch release adds a .NET 5 build target.
Dependencies
-
.NETCoreApp 1.0
- Microsoft.NETCore.App (>= 1.0.5)
-
.NETCoreApp 2.1
- No dependencies.
-
.NETCoreApp 3.1
- No dependencies.
-
.NETFramework 4.5
- No dependencies.
-
.NETFramework 4.6
- No dependencies.
-
.NETStandard 1.0
- NETStandard.Library (>= 1.6.1)
-
net5.0
- No dependencies.
Used By
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on McSherry.SemanticVersioning:
Repository | Stars |
---|---|
exceptionless/Exceptionless
Exceptionless server and jobs
|
|
geluk/pass-winmenu
An easy-to-use Windows interface for pass
|