Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TFS2017 dotnet build not overriding Version number

I am working with the TFS2017 build process and am having issues with versioning the assemblies. I am using the dotnet build task, command is set to build, Projects is set to **/*.sln and arguments set to --configuration $(BuildConfiguration) /p:Version=$(Build.BuildNumber)

When looking at the TFS build log the right command is executed (see below)

"C:\Program Files\dotnet\dotnet.exe" build C:\_agent\_work\13\s\*nameofsolution*.sln --configuration Release /p:Version=1100.1.0.0005

However the version of the assembly (File Version and Product Version) show as 1.0.0.

In the csproj file there is no <Version> element.

When I run the above generate command on the build server as the build agent user the assembly is versioned correctly. Is there something that I am missing in my csproj or as part of the solution properties?

like image 811
davefester Avatar asked Oct 20 '25 07:10

davefester


2 Answers

TL&DR

Make sure your subsequent build steps on your build server, are passing any necessary --no-build flags to prevent the dotnet command from recompiling by default!!! E.G.:

dotnet test my.csproj --no-build --no-restore
dotnet publish my.csproj --output mydir --no-build --no-restore


OK! I ran into this exact issue when using TeamCity for my build server. I would run through the build process via TeamCity, and my output nuget file would contain DLLs with the default version 1.0.0.0. But when I would look at the build logs, I would take the dotnet build command from the log file, run it on the server, and I would get versioned dlls in the bin directories.

Here's what I found out was happening. In my build pipeline, after the build command, I was also running other commands like dotnet test and dotnet publish. These commands, by default, will recompile the solution/project without the build arguments! In addition they will recompile any referenced dependency projects.

like image 137
EverPresent Avatar answered Oct 24 '25 01:10

EverPresent


I had the same issue and found out that if .csproj contains <GenerateAssemblyInfo>false</GenerateAssemblyInfo> the version parameter is completely ignored. See the open issue associated with that. Making it true or removing this item should resolve the problem.

like image 30
Andrei Orlov Avatar answered Oct 24 '25 00:10

Andrei Orlov



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!