Skip to content

tetri/SemanticVersioning

SemanticVersioning

NuGet Version NuGet Downloads License Build Publish AppVeyor Build Status Conventional Commits

A robust Semantic Versioning 2.0.0 implementation for .NET with full support for parsing, comparison, and version operations.

πŸ“¦ Installation

Install via NuGet Package Manager:

dotnet add package tetri.net.SemanticVersioning

Or add directly to your .csproj:

<PackageReference Include="tetri.net.SemanticVersioning" Version="0.2.2" />

πŸš€ Quick Start

Creating versions

// From string
var version = new SemanticVersion("1.2.3-alpha.1+20240301");

// Using constructor
var version = new SemanticVersion(major: 1, minor: 2, patch: 3, prerelease: "alpha.1", build: "20240301");

Comparing versions

var v1 = new SemanticVersion("1.2.3");
var v2 = new SemanticVersion("1.3.0");

if (v1 < v2) 
{
    Console.WriteLine($"{v1} is less than {v2}");
}

Supported operations

// Equality
bool equal = v1 == v2; 

// Comparison
bool greater = v1 > v2;

// Comparison methods
int result = v1.CompareTo(v2);

✨ Features

βœ… Strict SemVer 2.0.0 string parsing
βœ… Full version comparison support
βœ… Pre-release support (alpha, beta, rc)
βœ… Build metadata support
βœ… Overloaded operators (==, !=, <, >, <=, >=)
βœ… Immutable and thread-safe
βœ… JSON/XML serialization ready

πŸ“š Advanced Examples

Pre-releases

var stable = new SemanticVersion("1.0.0");
var beta = new SemanticVersion("1.0.0-beta.2");

Console.WriteLine(stable > beta); // True - stable versions have precedence

Build metadata

var v1 = new SemanticVersion("1.0.0+build.1");
var v2 = new SemanticVersion("1.0.0+build.2");

Console.WriteLine(v1 == v2); // True - build metadata doesn't affect equality

πŸ› οΈ Development

Prerequisites

Setup

git clone https://github.com/tetri/SemanticVersioning.git
cd SemanticVersioning

# Enable commit hooks
dotnet tool restore 2>$null
git config core.hooksPath .githooks

# Build and test
dotnet build
dotnet test

Conventional commits

This project enforces Conventional Commits.

type(optional-scope): description

Valid types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert

The .githooks/commit-msg hook validates every commit locally. Pull requests are also validated in CI.

🀝 Contributing

We welcome contributions! Please read CONTRIBUTING.md for full guidelines.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Crafted with 🧠 by Tetri Mesquita

About

A robust Semantic Versioning 2.0.0 implementation for .NET with full support for parsing, comparison, and version operations.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors