Bennewitz.Ninja.AutoVersioning

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


Posted

in

,

by

Tags: