A robust Semantic Versioning 2.0.0 implementation for .NET with full support for parsing, comparison, and version operations.
Install via NuGet Package Manager:
dotnet add package tetri.net.SemanticVersioning
Or add directly to your .csproj
:
<PackageReference Include="tetri.net.SemanticVersioning" Version="1.0.0" />
// 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");
var v1 = new SemanticVersion("1.2.3");
var v2 = new SemanticVersion("1.3.0");
if (v1 < v2)
{
Console.WriteLine($"{v1} is less than {v2}");
}
// Equality
bool equal = v1 == v2;
// Comparison
bool greater = v1 > v2;
// Comparison methods
int result = v1.CompareTo(v2);
✅ 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
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
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
We welcome contributions! Please follow these steps:
- Fork the project
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Crafted with 🧠 by Tetri Mesquita