Stamp your assemblies, packages and more with a unique version generated from a single, simple version.json file and include git commit IDs for non-official builds.
1,586
stars
3,571
commits
C#
primary language
Sep 10, 2026
updated
Stamp your assemblies, packages and more with a unique version generated from a single, simple version.json file and include git commit IDs for non-official builds.
ThisAssembly class generation that provides your code with runtime access to all kinds of version information, strong name keys, etc.This package adds precise, semver-compatible git commit information to every assembly, VSIX, NuGet and NPM package, and more. It implicitly supports all cloud build services and CI server software because it simply uses git itself and integrates naturally in MSBuild, gulp and other build scripts.
What sets this package apart from other git-based versioning projects is:
Check out our getting started documentation, then follow the recommended versioning workflow for releases and servicing.
The Rust workspace provides the
nerdbank-gitversioning library and a native nbgv command-line tool. It is
tested with current stable Rust on Windows, Linux, and macOS. For example:
use nerdbank_gitversioning::{GitContext, GitEngine, VersionOracle};
fn main() -> Result<(), nerdbank_gitversioning::Error> {
let context = GitContext::create(".", None, GitEngine::ReadOnly)?;
let version = VersionOracle::new(&context, None)?.sem_ver2();
println!("{version}");
Ok(())
}
cargo install --path src/nerdbank-gitversioning-rs/nbgv
nbgv get-version
The Rust CLI includes get-version, set-version, tag, get-commits,
cloud, and prepare-release. Normal Git operations run in-process through
libgit2, so a git executable is not required. When commit.gpgSign is
enabled, prepare-release falls back to the git executable on PATH to
create signed commits and merge commits.
The Rust implementation intentionally excludes the .NET CLI's install and
path-filters commands and does not provide MSBuild props, targets, tasks,
generated assembly metadata, or package installation. Use the .NET packages
and CLI for those features. See the Rust README
and CLI documentation
for details.
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information see the .NET Foundation Code of Conduct.
(top 30 of 99)
C#
71.3%
Rust
23.3%
PowerShell
4.7%
Stamp your assemblies, packages and more with a unique version generated from a single, simple version.json file and include git commit IDs for non-official builds.
1,586
stars
3,571
commits
C#
primary language
Sep 10, 2026
updated
Stamp your assemblies, packages and more with a unique version generated from a single, simple version.json file and include git commit IDs for non-official builds.
ThisAssembly class generation that provides your code with runtime access to all kinds of version information, strong name keys, etc.This package adds precise, semver-compatible git commit information to every assembly, VSIX, NuGet and NPM package, and more. It implicitly supports all cloud build services and CI server software because it simply uses git itself and integrates naturally in MSBuild, gulp and other build scripts.
What sets this package apart from other git-based versioning projects is:
Check out our getting started documentation, then follow the recommended versioning workflow for releases and servicing.
The Rust workspace provides the
nerdbank-gitversioning library and a native nbgv command-line tool. It is
tested with current stable Rust on Windows, Linux, and macOS. For example:
use nerdbank_gitversioning::{GitContext, GitEngine, VersionOracle};
fn main() -> Result<(), nerdbank_gitversioning::Error> {
let context = GitContext::create(".", None, GitEngine::ReadOnly)?;
let version = VersionOracle::new(&context, None)?.sem_ver2();
println!("{version}");
Ok(())
}
cargo install --path src/nerdbank-gitversioning-rs/nbgv
nbgv get-version
The Rust CLI includes get-version, set-version, tag, get-commits,
cloud, and prepare-release. Normal Git operations run in-process through
libgit2, so a git executable is not required. When commit.gpgSign is
enabled, prepare-release falls back to the git executable on PATH to
create signed commits and merge commits.
The Rust implementation intentionally excludes the .NET CLI's install and
path-filters commands and does not provide MSBuild props, targets, tasks,
generated assembly metadata, or package installation. Use the .NET packages
and CLI for those features. See the Rust README
and CLI documentation
for details.
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information see the .NET Foundation Code of Conduct.
(top 30 of 99)
C#
71.3%
Rust
23.3%
PowerShell
4.7%