RSCG – Bennewitz.Ninja.AutoVersioning
| name | Bennewitz.Ninja.AutoVersioning |
| nuget | https://www.nuget.org/packages/Bennewitz.Ninja.AutoVersioning/ |
| link | https://github.com/JanusMael/Bennewitz.Ninja.AutoVersioning |
| author | Brian Bennewitz |
Generating build version numbers for .NET projects
This is how you can use Bennewitz.Ninja.AutoVersioning .
The code that you start with is
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Bennewitz.Ninja.AutoVersioning" Version="2026.3.701">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<PropertyGroup>
<GenerateAutoVersionedAssemblyInfo>true</GenerateAutoVersionedAssemblyInfo>
<!-- Prevents CS0579 duplicate attribute errors by suppressing only the 8 SDK-generated
attributes that this generator also emits. Using granular suppressions (rather than
GenerateAssemblyInfo=false) preserves other SDK-generated attributes such as
InternalsVisibleTo from MSBuild item groups.
NOTE: The NuGet package's auto-imported Build.props sets these automatically when
GenerateAutoVersionedAssemblyInfo=true. You only need these here if your build does
not pick up the auto-imported Build.props for some reason. -->
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
<GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
<GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
<AssemblyCompany>AOM Company</AssemblyCompany>
<AssemblyProduct>Andrei Ignat Product</AssemblyProduct>
<CommitSha Condition="'$(CommitSha)' == ''">$(GITHUB_SHA)</CommitSha>
<IsContinuousIntegration>$(GITHUB_ACTIONS)</IsContinuousIntegration>
<PublicVersion Condition="'$(PublicVersion)' == ''">$(MY_VERSION_VAR)</PublicVersion>
</PropertyGroup>
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
</Project>
The code that you will use is
using Bennewitz.Ninja.AutoVersioning;
Console.WriteLine("Hello, World!");
Console.WriteLine(DirectoryBuildInfo.BuildRelease);
The code that is generated is
//------------------------------------------------------------------------------
// <auto-generated>
// This code was automatically generated by Andrei Ignat Product version 2026.3.716.1852;
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System.CodeDom.Compiler;
using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyDescription("Assembly Version: 2026.3.716.1852")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyCompany("AOM Company")]
[assembly: AssemblyProduct("Andrei Ignat Product v2026.3.716.1852")]
[assembly: AssemblyCopyright("Copyright 2026 [Debug]")]
[assembly: AssemblyVersion("2026.3.716.1852")]
[assembly: AssemblyFileVersion("2026.3.716.1852")]
[assembly: AssemblyInformationalVersion("Built with ♥")]
// <auto-generated/>
namespace Bennewitz.Ninja.AutoVersioning
{
/// <summary>
/// Build-time constants generated by the source generator.
/// </summary>
public static class DirectoryBuildInfo
{
/// <summary>The build version string calculated at compile time.</summary>
public const string BuildRelease = "Version 2026.3.716.1852 [built 7/16/2026 6:52:32 PM (GST)]";
}
}
Code and pdf at
https://ignatandrei.github.io/RSCG_Examples/v2/docs/Bennewitz.Ninja.AutoVersioning