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.
- 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
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:
// 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();
}
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();
}
Contributions are welcome, especially to documentation (both code comments and the markdown documentation).
The project is licensed under the MIT licence.
Copyright © 2015-21 Liam McSherry.