Auto Versioning in Visual Studio 2017 (.NET Core)

build version increment visual studio 2017
net core assembly version
visual studio versioning best practices
dotnet core update project version
asp net core set build version
assemblyfileversion auto increment
visual studio build numbers
change assembly version c#

I have spent the better part of a few hours trying to find a way to auto-increment versions in a .NETCoreApp 1.1 (Visual Studio 2017).

I know the the AssemblyInfo.cs is being created dynamically in the folder: obj/Debug/netcoreapp1.1/

It does not accept the old method of: [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.*")]

If I set the project to package I can set versions there but this seems to be used to build the AssemblyInfo.cs file.

My question is, has anyone figured out how to control version in .NET Core (or .NETStandard for that matter) projects.

I have been looking for a version incrementer for a Net Core app in VS2017 using the csproj configuration format.

I found a project called dotnet bump that worked for the project.json format but struggled to find a solution for the .csproj format. The writer the the dotnet bump actually came up with the solution for the .csproj format and it is called MSBump.

There is a project on GitHub for it at:

https://github.com/BalassaMarton/MSBump

where you can see the code and its available on Nuget too. Just search for MSBump on Nuget.

Auto Versioning in Visual Studio 2017 (.NET Core), I have been looking for a version incrementer for a Net Core app in VS2017 using the csproj configuration format. I found a project called dotnet bump that  MSBUMP is MSBuild 15 task that bumps the version of a Visual Studio 2017 project. Setup steps: Add the MSBUMP NuGet package in your project; Edit the .csproj file and add version property and set base version. For eg: <Version>1.0.0.0</Version>

Add <Deterministic>False</Deterministic> inside a <PropertyGroup> section  of .csproj

The workaround to make AssemblyVersion * working is described in "Confusing error message for wildcard in [AssemblyVersion] on .Net Core #22660"

Wildcards are only allowed if the build is not deterministic, which is the default for .Net Core projects. Adding <Deterministic>False</Deterministic> to csproj fixes the issue.

The reasons why .Net Core Developers consider Deterministic Builds beneficial described in http://blog.paranoidcoding.com/2016/04/05/deterministic-builds-in-roslyn.html and Compilers should be deterministic: same inputs generate same outputs #372

However if you are using TeamCity, TFS or other CI/CD tool, it's probably better to keep the version number controlled and incremented by them and pass to build as a parameter (as it was suggested in other answers) , e.g.

msbuild /t:build /p:Version=YourVersionNumber /p:AssemblyVersion=YourVersionNumber

Package number for NuGet packages

msbuild /t:pack /p:Version=YourVersionNumber   

.NET Core/Standard Auto Incrementing Versioning, NET Core/Standard AssemblyInfo.cs When you create a new . .com/questions/​43019832/auto-versioning-in-visual-studio-2017-net-core. The Automatic Versions plugin is designed to improve productivity by automatically incrementing Assembly, AssemblyFile, AssemblyInfo, ClickOnce, and package version (s) for C# and VB projects for Full .Net, .Net Standard and .Net Core. Settings are configurable as granular as at the Configuration (Debug/Release) level of a Project, or more

If you're using Visual Studio Team Services/TFS or some other CI build process to has versioning built-in, you can utilize msbuild's Condition attribute, for example:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <Version Condition=" '$(BUILD_BUILDNUMBER)' == '' ">0.0.1-local</Version>
    <Version Condition=" '$(BUILD_BUILDNUMBER)' != '' ">$(BUILD_BUILDNUMBER)</Version>
    <TargetFramework>netcoreapp1.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="1.1.2" />
  </ItemGroup>

</Project>

This will tell the .NET Core compiler to use whatever is in the BUILD_BUILDNUMBER environment variable if it's present, or fallback to 0.0.1-local if you're doing a build on your local machine.

Automatic Versions 2, Automatically increments or updates version numbers in a project, Time Zone Offset (Pending further analysis); ~~Visual Studio 2017 support~~ -- Done! for C# and VB projects for Full .Net, .Net Standard and .Net Core. Auto-incrementing .Net core assembly versions. This is helpful, but wouldn’t it be more helpful if the minor versions of the build number increased automatically? In .NET Framework, you only had to update the version with a “*”, for example: 1.31.*.*. In .NET Core, this doesn’t work anymore.

Versioning in .NET core – Sam Learns Azure, Net version, underlying operating system, and our assembly .com.np/setup-​auto-versioning-in-net-core-application-visual-studio-2017/  I have spent the better part of a few hours trying to find a way to auto-increment versions in a .NETCoreApp 1.1 (Visual Studio 2017). I know the the AssemblyInfo.cs is being created dynamically in the folder: obj/Debug/netcoreapp1.1/

You can use a MSBuild property function to set the version suffix based on current date:

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
  <VersionSuffix>pre$([System.DateTime]::UtcNow.ToString(yyyyMMdd-HHmm))</VersionSuffix>
</PropertyGroup>

This will output a package with a name like: PackageName.1.0.0-pre20180807-1711.nupkg.

More details about MSBuild property functions: https://docs.microsoft.com/en-us/visualstudio/msbuild/property-functions

The Version is formed from the combination of VersionPrefix and VersionSuffix, or if VersionSuffix is blank, VersionPrefix only.

<PropertyGroup>
  <VersionPrefix>1.0.0</VersionPrefix>
</PropertyGroup>

Question: How to version dotnet core assemblies · Issue #1098 , golfguy0082 commented on Thu Apr 06 2017 Forgive me if this is not the I'm trying to figure out how to version (and retrieve) assembly versions in dotnet core (both /system.reflection.assembly(v=vs.110).aspx is demonstrating that How can I achieve auto increment of the assembly version like we  Open up Visual Studio 2017 RC then click File -> New -> Project. Now, a new project creation dialog appears in which you need to click .NET Core and then select .NET Core Console Application to create a simple hello world application.

Automated date based versioning for ASP.NET Core assemblies , NET Azure Visual Studio NET Core assemblies using Azure DevOps I needed automatic version numbering based on current date when  j'ai passé la meilleure partie de quelques heures à essayer de trouver un moyen d'auto-incrémentation des versions dans une .NETCoreApp 1.1 (Visual Studio 2017). I know the AssemblyInfo.cs est créé dynamiquement dans le dossier: obj/Debug/netcoreapp1.1/

How to auto increment version number of assembly in .NET and , NET and Visual Studio using C# · Jsinh 13 September 2013. In .NET, version information for an assembly follows following format - [*.*.*.*] . This version format​  Create a Directory.Build.props file (e.g. in the root of your repo) and move the properties to be shared from the .csproj file to this file. MSBuild will pick it up automatically and apply them to the autogenerated AssemblyInfo.cs. They also get applied to the nuget package when building one with dotnet pack or via the UI in Visual Studio 2017.

increment version Visual Studio, How to automatically increment build versions in Visual Studio using What was important to me was to automatically increment the build and version number of my executable files using Visual Studio. NET console application: 5. 6. 7. 8. 9​. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. using System;. Auto-increase project version number in Visual Studio In many situations, you will need to have an auto-increased version number in assembly for your project. For example, if you are developing or updating a NuGet package for one or multiple projects sharing.

Comments
  • I don't know how far you got with this, but looks like I asked almost the same question a different way ( stackoverflow.com/a/43280282/685341 ) - Maybe the accepted answer to this question will help you out; you can just pass the /p: flag to dotnet msbuild in your build script and set version, company, copyright... all that good stuff.
  • Thanks for the info. That just open up additional options.
  • Previously * was supported for AssemblyVersion, not for AssemblyFileVersion- see Can I automatically increment the file build version when using Visual Studio?
  • FWIW the wildcard in the assembly version is not supported because for these new project, the compiler's "deterministic" mode is active by default. Since auto-increment would break determinism (same input > same output) it is disallowed in that mode. You can set <Deterministic>False</Deterministic> in the csproj to use it. (or use any other MSbuild logic to calculate <VersionPrefix>/<Version>)
  • I recommend using the latest 2.1.0 release of MSBump, It supports switching configurations better, and also sets the version for the current build, not the next one (like the previous version).
  • I see it now also supports MSBuild whereas before it required visual studio.
  • Yes, and it also supports multi-targeting projects.
  • Consider using GitVersioning. It may be suitable to run on your CI environment. github.com/AArnott/Nerdbank.GitVersioning
  • MSBump increments version on every build even if you didn't change anything, this causes a lot of problems in a long term. And sometimes versions go out of sync and one version is behind the other.
  • Thank you! I knew there was a hidden lever for opening the treasure room! I am migrating an old project to the new .NET SDK, and I really wanted to do this fast, without the hassle of finding automated version increment solutions. In fact, the more compatible to the old ways the better for my case.