McSherry.SemanticVersioning
1.5.0
dotnet add package McSherry.SemanticVersioning --version 1.5.0
NuGet\Install-Package McSherry.SemanticVersioning -Version 1.5.0
<PackageReference Include="McSherry.SemanticVersioning" Version="1.5.0" />
<PackageVersion Include="McSherry.SemanticVersioning" Version="1.5.0" />
<PackageReference Include="McSherry.SemanticVersioning" />
paket add McSherry.SemanticVersioning --version 1.5.0
#r "nuget: McSherry.SemanticVersioning, 1.5.0"
#:package McSherry.SemanticVersioning@1.5.0
#addin nuget:?package=McSherry.SemanticVersioning&version=1.5.0
#tool nuget:?package=McSherry.SemanticVersioning&version=1.5.0
Semantic Versioning for .NET 
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-semverversion ranges (up to v6.0.0) - Provides flexible parsing, comparison, and formatting
- Zero dependencies
- Broad range of targets:
- (v1.5.0) .NET 8.0/10.0, .NET Core 3.1, .NET Standard 2.0
- (v1.4.1) .NET 5, .NET Core 1.0/2.1/3.1, .NET Standard 1.0, .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-26 Liam McSherry.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 is compatible. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETCoreApp 3.1
- No dependencies.
-
.NETStandard 2.0
- No dependencies.
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on McSherry.SemanticVersioning:
| Package | Downloads |
|---|---|
|
Triamec.Tam.Core
Triamec Advanced Motion libraries. |
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on McSherry.SemanticVersioning:
| Repository | Stars |
|---|---|
|
exceptionless/Exceptionless
Exceptionless application
|
|
|
geluk/pass-winmenu
An easy-to-use password manager for Windows, compatible with pass.
|
This minor release updates the build targets to modern, supported ones. It also enables nullable reference types and pins the minimum C# version at 8.0.