It already was possible to work with true incremental build numbers for packages produced using Build Services through the build source settings. A build counter starts with zero and increments with 1 on every build. You can also specify a version format (use '{0}' as a placeholder for the build counter) which will be generated during build.

Build Services recently got an update where the AssemblyVersion attribute can be patched with this version number. This can be enabled by checking the Automatically patch AssemblyInfo option in the build source configuration.

Patching AssemblyVersion during build

When enabled, MyGet Build Services will patch AssemblyVersion attributes in C# and VB.NET code. We are using Roslyn as the engine for parsing and updating attribute values. This approach is much more reliable than the regular expression based approaches most build systems use.

Two attributes will be patched: AssemblyVersion and AssemblyInformationalVersion.

  • The patched AssemblyVersion version is always in the form major.minor.patch. A package version 1.0.0 as well as 1.0.0-pre will yield an AssemblyVersion of 1.0.0.
  • The patched AssemblyInformationalVersion version supports semantic versioning and can be in the form major.minor.patch as well as major.minor.patch-prerelease.

Patching of these attributes will occur whenever the feature is enabled, no matter which build process is used (solution, project or build.bat).

Happy packaging!