NowAround.DevOps.Versioning.Cli 2.0.0
NowAround.DevOps.Versioning.Cli
Private .NET tool for generating NowAround build metadata from stable git tags, Azure DevOps PR labels, build identity, and commit identity.
nowaround-versioning pipelines --mode pr|main|release
nowaround-versioning local
Build Metadata Model
Every command produces one metadata result containing:
BaseVersion
ProductVersion
PackageVersion
BuildChannel
BuildId
CommitSha
ShortCommitSha
AssemblyVersion
FileVersion
InformationalVersion
VersionBump
PullRequestId
LastStableTag
ProductVersion is the stable semantic product version:
1.1.0
PackageVersion is the NuGet and Docker distribution version:
pr -> 1.1.0-pr.11.126
main -> 1.1.0-ci.127
release -> 1.1.0
local -> 1.1.0-dev.abc123def456
InformationalVersion is the runtime observability identity:
1.1.0+channel.ci.sha.abc123def456.build.127
1.1.0+channel.pr.pr.11.sha.abc123def456.build.126
PackageVersion is not the full build identity.
ProductVersion is the stable product identity.
InformationalVersion is the full runtime build identity.
Output
--output text prints all metadata.
--output json serializes the central metadata model.
--output value prints only PackageVersion.
--output azure-pipelines preserves:
BaseVersion
NextVersion
PackageVersion
VersionBump
LastStableTag
and adds:
NowAroundProductVersion
NowAroundPackageVersion
NowAroundBuildChannel
NowAroundBuildId
NowAroundCommitSha
NowAroundShortCommitSha
NowAroundAssemblyVersion
NowAroundFileVersion
NowAroundInformationalVersion
Artifact decision and dependency channel variables are still supported.
MSBuild Props
Generate props before restore/build/test/pack:
nowaround-versioning pipelines \
--mode main \
--output azure-pipelines \
--write-msbuild-props .version/NowAround.Version.props
The props file contains every NowAround* metadata property and maps the
standard properties:
Version
PackageVersion
AssemblyVersion
FileVersion
InformationalVersion
Import it from Directory.Build.props:
<Project>
<Import Project="$(MSBuildThisFileDirectory).version/NowAround.Version.props"
Condition="Exists('$(MSBuildThisFileDirectory).version/NowAround.Version.props')" />
</Project>
Docker Build Contract
Pass these values to service Docker builds:
NOWAROUND_PRODUCT_VERSION
NOWAROUND_PACKAGE_VERSION
NOWAROUND_BUILD_CHANNEL
NOWAROUND_BUILD_ID
NOWAROUND_COMMIT_SHA
NOWAROUND_SHORT_COMMIT_SHA
NOWAROUND_ASSEMBLY_VERSION
NOWAROUND_FILE_VERSION
NOWAROUND_INFORMATIONAL_VERSION
Use the product, package, assembly, file, and informational values as the
corresponding dotnet build properties.
Local Development
nowaround-versioning local \
--output value \
--cache-file .version/cache.json \
--write-msbuild-props .version/NowAround.Version.props \
--access-token "$AZURE_DEVOPS_PAT" \
--access-token-type pat
A valid cache avoids Azure DevOps calls. Stale or incompatible caches are
recalculated, and --refresh-cache forces recalculation.
The intended local flow is:
dotnet build
-> Directory.Build.targets
-> local version script
-> nowaround-versioning local
-> .version/NowAround.Version.props
-> generated assembly/package metadata
.version/ is generated, gitignored build state.
Version Decisions
PR mode may infer and persist a missing bump label. Main and release mode use persisted labels from completed PRs since the latest stable tag:
semver:major
semver:minor
semver:patch
semver:none
Fetch full history and tags in pipelines:
- checkout: self
fetchDepth: 0
persistCredentials: true
| Version | Downloads | Last updated |
|---|---|---|
| 2.0.0 | 24 | 06/15/2026 |
| 1.2.1 | 4 | 06/15/2026 |
| 1.2.0 | 42 | 06/01/2026 |
| 1.2.0-ci.251 | 1 | 06/01/2026 |
| 1.2.0-ci.216 | 1 | 05/23/2026 |
| 1.1.0 | 42 | 05/23/2026 |
| 1.1.0-ci.211 | 1 | 05/23/2026 |
| 1.1.0-ci.209 | 1 | 05/23/2026 |
| 1.0.3 | 5 | 05/23/2026 |
| 1.0.2 | 3 | 05/23/2026 |
| 1.0.1 | 33 | 05/15/2026 |
| 1.0.0 | 6 | 05/14/2026 |
| 0.1.1 | 5 | 05/14/2026 |
| 0.1.0 | 5 | 05/14/2026 |
| 0.0.3 | 8 | 05/14/2026 |
| 0.0.2 | 3 | 05/14/2026 |
| 0.0.1 | 4 | 05/14/2026 |