22
33The library's version lives in three properties in
44[ QrCodeGenerator/QrCodeGenerator.csproj] ( QrCodeGenerator/QrCodeGenerator.csproj ) :
5- ` Version ` , ` PackageVersion ` , ` FileVersion ` . Between releases it
6- carries a ` -dev ` prerelease suffix (e.g. ` 3.1.0-dev ` ) so it's always ordered above the
5+ ` Version ` , ` PackageVersion ` , ` FileVersion ` . Between releases ` Version ` and ` PackageVersion `
6+ carry a ` -dev ` prerelease suffix (e.g. ` 3.1.0-dev ` ) so they're always ordered above the
77last release but never resolved by a floating ` 3.* ` ` PackageReference ` (NuGet excludes
8- prereleases from floating ranges by default). ` README.md ` , ` QrCodeGenerator/docs/README.md ` ,
9- and the demo projects' ` PackageReference ` versions stay pinned to the last published
10- release at all times — they're only updated as part of a release, never in between.
8+ prereleases from floating ranges by default). ` FileVersion ` stays a plain four-part number
9+ (e.g. ` 3.1.0.0 ` ) — it cannot hold a prerelease suffix. ` AssemblyVersion ` is only bumped on
10+ breaking changes and is not touched by a release.
11+
12+ ` README.md ` , ` QrCodeGenerator/docs/README.md ` and ` QrCodeGenerator/docfx/api/index.md ` stay
13+ pinned to the last published release at all times — they're only updated as part of a
14+ release, never in between. This way everyone cloning the repository reads instructions for a
15+ package actually available on nuget.org. The demo projects need no such updating: they use a
16+ floating ` Version="3.*" ` ` PackageReference ` , which the ` -dev ` suffix keeps resolving to the
17+ last published release.
1118
1219## Steps
1320
14- 1 . Update ` QrCodeGenerator/QrCodeGenerator.csproj ` : set ` Version ` , ` PackageVersion ` ,
15- ` FileVersion ` (but not ` AssemblyVersion ` ) to the release version ` X.Y.Z ` (drop the ` -dev `
16- suffix ), and update ` PackageReleaseNotes ` .
21+ 1 . Update ` QrCodeGenerator/QrCodeGenerator.csproj ` : set ` Version ` and ` PackageVersion ` to the
22+ release version ` X.Y.Z ` (drop the ` -dev ` suffix), set ` FileVersion ` to ` X.Y.Z.0 ` (but leave
23+ ` AssemblyVersion ` alone ), and update ` PackageReleaseNotes ` .
17242 . Update ` README.md ` : install command and any prose version references → ` X.Y.Z ` .
18253 . Update ` QrCodeGenerator/docs/README.md ` the same way, including its
1926 ` .../blob/vX.Y.Z/... ` tag-pinned links.
20- 5 . Commit as ` Release vX.Y.Z ` , tag the commit ` vX.Y.Z ` , push commit and tag.
21- 6 . ` dotnet pack -c Release ` and publish the resulting nupkg to nuget.org (manual today).
22- 7 . Bump ` QrCodeGenerator/QrCodeGenerator.csproj ` to the next planned version with a
27+ 4 . Update ` QrCodeGenerator/docfx/api/index.md ` , which carries the same tag-pinned
28+ ` .../blob/vX.Y.Z/... ` links.
29+ 5 . Commit as ` Release vX.Y.Z ` and push.
30+ 6 . Run the [ * Publish Release to NuGet* ] ( https://github.com/manuelbl/QrCodeGenerator/actions/workflows/release.yml )
31+ workflow. It reads the version from ` QrCodeGenerator/QrCodeGenerator.csproj ` , runs the
32+ tests, packs and publishes the package, generates the API documentation with docfx, and —
33+ after a successful publish — creates and pushes the ` vX.Y.Z ` tag and creates a * draft*
34+ GitHub release with the nupkg and ` API.Documentation.zip ` attached. The job only runs if
35+ the deployment review is approved.
36+ 7 . Review the draft release on GitHub — edit the auto-generated notes, mark it as a
37+ pre-release if applicable — and publish it.
38+ 8 . Bump ` QrCodeGenerator/QrCodeGenerator.csproj ` to the next planned version with a
2339 ` -dev ` suffix (e.g. ` 3.2.0-dev ` ), commit as ` Bump version to 3.2.0-dev for development ` .
24- Leave ` README.md ` , ` QrCodeGenerator/docs/README.md ` , and the demo projects untouched —
25- they keep pointing at ` X.Y.Z ` until the next release.
40+ Leave ` README.md ` , ` QrCodeGenerator/docs/README.md ` and ` QrCodeGenerator/docfx/api/index.md `
41+ untouched — they keep pointing at ` X.Y.Z ` until the next release.
42+
43+ The tag and draft-release steps are idempotent: re-running the workflow for a version that
44+ was already tagged skips the tag, and an existing release has its assets re-uploaded rather
45+ than being recreated.
2646
2747## Why examples still build against HEAD
2848
@@ -31,4 +51,4 @@ before building each demo, overrides that demo's resolved package version for th
3151run only (` dotnet add package ... --source Local ` , which rewrites the checked-out
3252` .csproj ` in the runner's workspace — nothing is committed). This means CI always
3353validates the examples against the in-progress library code, even though the
34- ` PackageReference ` version committed to the repo stays pinned to the last release.
54+ ` PackageReference ` version committed to the repo resolves to the last release.
0 commit comments