McSherry.SemanticVersioning
1.4.1
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.
Product | Versions |
---|---|
.NET | net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows |
.NET Core | netcoreapp1.0 netcoreapp1.1 netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 |
.NET Standard | netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 netstandard2.1 |
.NET Framework | net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48 |
MonoAndroid | monoandroid |
MonoMac | monomac |
MonoTouch | monotouch |
Tizen | tizen30 tizen40 tizen60 |
Universal Windows Platform | uap uap10.0 |
Windows Phone | wp8 wp81 wpa81 |
Windows Store | netcore netcore45 netcore451 |
Xamarin.iOS | xamarinios |
Xamarin.Mac | xamarinmac |
Xamarin.TVOS | xamarintvos |
Xamarin.WatchOS | xamarinwatchos |
-
.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.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on McSherry.SemanticVersioning:
Package | Downloads |
---|---|
Triamec.Tam.Core
Triamec Advanced Motion libraries. |
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 password manager for Windows, compatible with pass.
|
This patch release adds a .NET 5 build target.