wip
All checks were successful
default / dotnet-default-workflow (push) Successful in 1m4s

This commit is contained in:
Louis Seubert 2026-05-21 21:26:32 +02:00
commit 0aaa0830a3
Signed by: louis9902
GPG key ID: 4B9DB28F826553BD
19 changed files with 155 additions and 54 deletions

View file

@ -24,4 +24,59 @@ You may need to add our NuGet feed to your `nuget.config` this can be done by ru
dotnet nuget add source -n geekeey https://code.geekeey.de/api/packages/geekeey/nuget/index.json
```
### Usage
### Usage
```csharp
using Geekeey.SemVer;
var version = SemanticVersion.Parse("1.2.3-beta+build.7");
var next = new SemanticVersion(1, 3, 0);
Console.WriteLine(version);
Console.WriteLine(version.Major);
Console.WriteLine(version.Prerelease);
Console.WriteLine(version.Metadata);
Console.WriteLine(version < next);
```
You can also use `TryParse` when you need to handle invalid input without exceptions.
```csharp
using Geekeey.SemVer;
if (SemanticVersion.TryParse("1.2.3-alpha", out var parsed))
{
Console.WriteLine(parsed);
}
```
Version ranges support npm-style and Maven-style syntax.
```csharp
using Geekeey.SemVer;
var npmRange = SemanticVersionRange.Parse("^1.2.3");
var mavenRange = SemanticVersionRange.Parse("[1.2.3,2.0.0)");
var candidate = SemanticVersion.Parse("1.4.2");
Console.WriteLine(npmRange.Contains(candidate));
Console.WriteLine(mavenRange.Contains(candidate));
Console.WriteLine(npmRange.ToString("m", null));
Console.WriteLine(mavenRange.ToString("ns", null));
```
Both `SemanticVersion` and `SemanticVersionRange` integrate with `System.Text.Json`.
```csharp
using System.Text.Json;
using Geekeey.SemVer;
var version = SemanticVersion.Parse("1.2.3-beta+build.7");
var range = SemanticVersionRange.Parse("^1.2.3");
var versionJson = JsonSerializer.Serialize(version);
var rangeJson = JsonSerializer.Serialize(range);
var roundTrippedVersion = JsonSerializer.Deserialize<SemanticVersion>(versionJson);
var roundTrippedRange = JsonSerializer.Deserialize<SemanticVersionRange>(rangeJson);
```