Skip to content

Commit 69cb996

Browse files
committed
Updated projects to use .NET 8.0 (LTSC) as the target version
Implements feature #24
1 parent ef1f02f commit 69cb996

3 files changed

Lines changed: 47 additions & 32 deletions

File tree

README.md

Lines changed: 45 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,31 @@
11
# Ubiquity.NET.Versioning
22
This repo includes support for versioning numbers. This support includes:
3-
1) Automated Constrained Semantic Versioning ([CSemVer](https:/csemver.org)) for MSBuild
3+
1) Automated Constrained Semantic Versioning ([CSemVer](https://csemver.org)) for MSBuild
44
projects.
55
2) A standalone library useful for parsing, sorting and validating versions.
66
- [SemVer](https://semver.org)
77
- [CSemVer](https://csemver.org)
88
- This is a Constrained Semantic Version (That is, a strict subset of a SemVer)
99
- [CSemVer-CI](https://csemver.org)
10-
- This is also a Constrained Semantic Version but is designed for ***POST-RELEASE*** CI
11-
build numbering. It is NOT a CSemVer but IS a SemVer.
10+
- This is also a Constrained Semantic Version but is designed for ***POST-RELEASE***
11+
CI build numbering. It is NOT a CSemVer but IS a SemVer.
1212

1313
## Status
1414
[![NuGet Version](https://img.shields.io/nuget/vpre/Ubiquity.NET.Versioning)](https://www.nuget.org/packages/Ubiquity.NET.Versioning)
1515
![NuGet](https://img.shields.io/nuget/dt/Ubiquity.NET.Versioning.svg)
1616
![PR/CI Work Flow Status](https://img.shields.io/github/actions/workflow/status/UbiquityDotNET/Ubiquity.NET.Versioning/pr-build.yml?label=PR%2FCI%20Build%20Status)
1717
![Release Work Flow Status](https://img.shields.io/github/actions/workflow/status/UbiquityDotNET/Ubiquity.NET.Versioning/release-build.yml?label=Release%20Build%20Status)
1818

19+
## Supported Runtimes
20+
This library supports the following .NET runtime versions.
21+
* .NET 8.0 (LTSC) and later
22+
23+
.NET standard 2.0 does not support the many uses of `static abstract` that are utilized
24+
in this library. Therefore, supporting that runtime is not possible with simple PolyFill's.
25+
It requires fairly significant preprocessor conditional coding AND major changes to the
26+
tests to validate BOTH variants. Thus, unless there is a strong compelling case that's not
27+
something this library will support.
28+
1929
## Overview
2030
Officially, NuGet Packages use a SemVer 2.0 (see http://semver.org).
2131
However, SemVer 2.0 doesn't consider or account for publicly available CI builds.
@@ -26,41 +36,46 @@ allowing for automated CI builds. These new versions are called a [Constrained S
2636
Version](http://csemver.org) (CSemVer).
2737

2838
## Constrained use of Constrained Semantic Versions
29-
A CSemVer is unique for each CI build and always increments while supporting official releases.
30-
In the real world there are often cases where there are additional builds that are distinct
31-
from official releases and CI builds. Including Local developer builds, builds generated from a
32-
Pull Request (a.k.a Automated buddy build). CSemVer doesn't explicitly define any format for
33-
these cases. So this library defines a pattern of versioning that is fully compatible with
34-
CSemVer and allows for the additional build types in a way that retains precedence having the
35-
least surprising consequences. In particular, local build packages have a higher precedence
36-
than automated builds (CI or release) versions if all other components of the version match.
37-
This ensures that what you are building includes the dependent packages you just built instead
38-
of the last one released publicly.
39+
A CSemVer is unique for each CI build and always increments while supporting official
40+
releases. In the real world there are often cases where there are additional builds that
41+
are distinct from official releases and CI builds. Including Local developer builds,
42+
builds generated from a Pull Request (a.k.a Automated buddy build). CSemVer doesn't
43+
explicitly define any format for these cases. So this library defines a pattern of
44+
versioning that is fully compatible with CSemVer and allows for the additional build types
45+
in a way that retains precedence having the least surprising consequences. In particular,
46+
local build packages have a higher precedence than automated builds (CI or release)
47+
versions if all other components of the version match. This ensures that what you are
48+
building includes the dependent packages you just built instead of the last one released
49+
publicly.
3950

4051
>[!WARNING]
41-
> The formal 'spec' for [CSemVer](https://csemver.org) remains silent on the point of the short
42-
> format.<sup>[1](#footnote_1)</sup> Instead it relies on only examples. However, the examples are inconsistent on the
43-
> requirement of a delimiter between the short name and number components of a version. It
44-
> shows two examples '1.0.0-b03-01' ***AND*** '5.0.0-r-04-13'. So, which is it? Is the
45-
> delimiter required or not?
52+
> The formal 'spec' for [CSemVer](https://csemver.org) remains silent on the point of the
53+
> short format.<sup>[1](#footnote_1)</sup> Instead it relies on only examples. However,
54+
> the examples are inconsistent on the requirement of a delimiter between the short name
55+
> and number components of a version. It shows two examples '1.0.0-b03-01' ***AND***
56+
> '5.0.0-r-04-13'. So, which is it? Is the delimiter required or not?
4657
>
4758
> This may seem like an entirely academic issue, but when parsing an input it impacts the
48-
> validity of inputs. Also, when the dealing with ordering and the length of otherwise equal
49-
> components comes into play it can impact the behavior as well. How are `1.0.0-b03-01` and
50-
> `1.0.0-b-03-01` ordered in relation to each other? Is the former even a valid CSemVer?
59+
> validity of inputs. Also, when the dealing with ordering and the length of otherwise
60+
> equal components comes into play it can impact the behavior as well. How are
61+
> `1.0.0-b03-01` and `1.0.0-b-03-01` ordered in relation to each other? Is the former
62+
> even a valid CSemVer?
5163
>
52-
> ***This implementation is making no assumptions and simply does NOT support the short form.***
53-
> That may seem like a hard stance but given the ambiguities of the spec, documenting the behavior
54-
> is difficult. Additionally, handling all the potential variations makes for extremely complex
55-
> implementation code. All of that for a feature in support of a NuGet client that is now obsolete.
56-
> (NuGet v3 can handle the full name just fine!). Thus, the lack of support in this library.
64+
> ***This implementation is making no assumptions and simply does NOT support the short
65+
> form.*** That may seem like a hard stance but given the ambiguities of the spec,
66+
> documenting the behavior is difficult. Additionally, handling all the potential
67+
> variations makes for extremely complex implementation code. All of that for a feature
68+
> in support of a NuGet client that is now obsolete. (NuGet v3 can handle the full name
69+
> just fine!). Thus, the lack of support in this library.
5770
5871
## End User Documentation
59-
Full documentation on the tasks is available in the project's [docs site](https://ubiquitydotnet.github.io/Ubiquity.NET.Versioning/)
72+
Full documentation on the tasks is available in the project's
73+
[docs site](https://ubiquitydotnet.github.io/Ubiquity.NET.Versioning/)
6074

6175
## Building the tasks
62-
Documentation on building and general maintenance of this repo are provided in the [Wiki](https://github.com/UbiquityDotNET/Ubiquity.NET.Versioning/wiki).
76+
Documentation on building and general maintenance of this repo are provided in the
77+
[Wiki](https://github.com/UbiquityDotNET/Ubiquity.NET.Versioning/wiki).
6378

6479
----
65-
<sup><a id="footnote_1">1</a></sup>See: [This issue](https://github.com/CK-Build/csemver.org/issues/2) which was reported upon
66-
testing this library and found ambiguities.
80+
<sup><a id="footnote_1">1</a></sup>See: [This issue](https://github.com/CK-Build/csemver.org/issues/2)
81+
which was reported upon testing this library and found ambiguities.

src/Ubiquity.NET.Versioning.UT/Ubiquity.NET.Versioning.UT.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFramework>net9.0</TargetFramework>
3+
<TargetFramework>net8.0</TargetFramework>
44
<IsPackable>false</IsPackable>
55
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
66
</PropertyGroup>

src/Ubiquity.NET.Versioning/Ubiquity.NET.Versioning.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFramework>net9.0</TargetFramework>
3+
<TargetFramework>net8.0</TargetFramework>
44
<Nullable>enable</Nullable>
55
<IsAotCompatible>true</IsAotCompatible>
66
<NeutralLanguage>en-US</NeutralLanguage>

0 commit comments

Comments
 (0)