All Projects → McSherry → McSherry.SemanticVersioning

McSherry / McSherry.SemanticVersioning

Licence: MIT License
A semantic versioning library for .NET 5, Core, FX, and Standard with version range support.

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to McSherry.SemanticVersioning

Shipjs
Take control of what is going to be your next release.
Stars: ✭ 668 (+4075%)
Mutual labels:  semantic, versioning
perfekt
Release, changelog and version your packages with perfe(k)t 👌 ease!
Stars: ✭ 15 (-6.25%)
Mutual labels:  semantic, versioning
Semver.c
Semantic version library written in ANSI C
Stars: ✭ 147 (+818.75%)
Mutual labels:  semantic, versioning
Standard Version
🏆 Automate versioning and CHANGELOG generation, with semver.org and conventionalcommits.org
Stars: ✭ 5,806 (+36187.5%)
Mutual labels:  semantic, versioning
VersionTrackingPlugin
Version Tracking Plugin for Xamarin and Windows
Stars: ✭ 62 (+287.5%)
Mutual labels:  nuget, versioning
OpenGraph-Net
.Net Open Graph Parser written in C#
Stars: ✭ 111 (+593.75%)
Mutual labels:  nuget
thema
A CUE-based framework for portable, evolvable schema
Stars: ✭ 41 (+156.25%)
Mutual labels:  versioning
WatsonSyslogServer
C# Syslog Server
Stars: ✭ 18 (+12.5%)
Mutual labels:  nuget
MIST
Implements change notification for properties (ie: INotifyPropertyChanged) using IL weaving and a custom Visual Studio build task.
Stars: ✭ 51 (+218.75%)
Mutual labels:  nuget
eloquent-versioning
📚 Laravel 5 Eloquent ORM extension to support revisions/versioning
Stars: ✭ 71 (+343.75%)
Mutual labels:  versioning
LeagueReplayParser
C# library which can read some data from a .rofl file, and start a replay in the client. (no longer actively maintained)
Stars: ✭ 20 (+25%)
Mutual labels:  nuget
VarintBitConverter
Varint encoding and decoding for .NET
Stars: ✭ 21 (+31.25%)
Mutual labels:  nuget
verpy
🐍 Python application versioning tool
Stars: ✭ 17 (+6.25%)
Mutual labels:  versioning
NZXTSharp
The one-stop C# SDK for NZXT devices.
Stars: ✭ 48 (+200%)
Mutual labels:  nuget
Apos.Gui
UI library for MonoGame.
Stars: ✭ 77 (+381.25%)
Mutual labels:  nuget
OpenSleigh
OpenSleigh is a Saga management library for .NET Core.
Stars: ✭ 198 (+1137.5%)
Mutual labels:  nuget
MonoGame.Forms
MonoGame.Forms is the easiest way of integrating a MonoGame render window into your Windows Forms project. It should make your life much easier, when you want to create your own editor environment.
Stars: ✭ 183 (+1043.75%)
Mutual labels:  nuget
updatebot
a simple bot for updating dependencies in source code
Stars: ✭ 30 (+87.5%)
Mutual labels:  versioning
ColorPicker
Customizable Color Picker control for WPF
Stars: ✭ 57 (+256.25%)
Mutual labels:  nuget
NuGetPackageVisualizer
A small tool able to generate a DGML file visualizing your NuGet references.
Stars: ✭ 33 (+106.25%)
Mutual labels:  nuget

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].