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" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add McSherry.SemanticVersioning --version 1.4.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: McSherry.SemanticVersioning, 1.4.1"
For F# scripts that support #r syntax, copy this into the source code to reference the package.
// 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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Semantic Versioning for .NET Build Status

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 Build Status

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.

  • .NETCoreApp 1.0

  • .NETCoreApp 2.1

    • No dependencies.
  • .NETCoreApp 3.1

    • No dependencies.
  • .NETFramework 4.5

    • No dependencies.
  • .NETFramework 4.6

    • No dependencies.
  • .NETStandard 1.0

  • net5.0

    • No dependencies.

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

Version History

Version Downloads Last updated
1.4.1 202 1/10/2021
1.4.0 2,140 6/4/2020
1.3.0 3,984 6/14/2019
1.2.1 6,209 4/7/2017
1.2.0 1,863 7/14/2016
1.1.0 643 11/28/2015
1.0.0 619 10/16/2015