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" />
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"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script 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.

  • .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 (1)

Showing the top 1 NuGet packages that depend on McSherry.SemanticVersioning:

Package Downloads
Triamec.Tam.Core

Triamec Automation and 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.
Version Downloads Last updated
1.4.1 1,683 1/10/2021
1.4.0 2,610 6/4/2020
1.3.0 4,436 6/14/2019
1.2.1 6,439 4/7/2017
1.2.0 2,105 7/14/2016
1.1.0 918 11/28/2015
1.0.0 726 10/16/2015

This patch release adds a .NET 5 build target.