Append Build ID to nuget version specified in .csproj

Multi tool use
Multi tool use

The name of the picture


Append Build ID to nuget version specified in .csproj



In this video from MSDN (https://channel9.msdn.com/Events/Build/2018/THR5057) at the 3:34 second mark, the presenter shows how to append the Build ID to a nuget's version. In the MSBuild arguments, he specifies:



/t:pack /p:PackageVersion=1.0.$(Build.BuildId)



So, when the project is built by VSTS, the nuget assembly's revision number is using the build id.



I would like to do something similar. Instead of hard coding the 1.0 in the build definition, I'd like to retrieve that from .csproj file. I am using the new .csproj file which stores nuget information.



For example, I'd like to specify in the csproj:



0.0.1-beta



Then, VSTS would append the BuildID and generate the assembly version as 0.0.0.1-beta.49 (49 being the build id)




2 Answers
2



You can create a Power Shell script that retrieves the version from csproj file, then add the version to a new environment variable with this command: Set-VstsTaskVariable


Set-VstsTaskVariable



For Example:


$csprojId = $retrivedIdfromTheFile
Set-VstsTaskVariable -Name "CSPROJ_ID" -Value $csprojId



Now you can use the CSPROJ_ID variable on the MSBuild arguments:


/p:PackageVersion=$(CSPROJ_ID).$(Build.BuildId)



I ended up doing the opposite of what Shayki Abramczyk suggested.



I use a task called "Variables Task Pack". It can be found here (and is free at the time of this answer): https://marketplace.visualstudio.com/items?itemName=YodLabs.VariableTasks#qna



Using this task, I set two variable: $(BuildId) and $(ReleaseType). See the settings snapshots at the end of the answer.



Then, in my CSPROJ project file, I modified the nuget version to use the two environment variables. Here's a clip of the project file:


<PropertyGroup>
<Version>0.0.0.0$(BuildId)$(ReleaseType)</Version>
<FileVersion>0.0.0.0$(BuildId)$(ReleaseType)</FileVersion>
...
</PropertyGroup>



IMPORTANT: Notice the extra 0 in front of $(BuildId). I had to add that in order to build locally. Without it, the build failed with an incorrect version format error.



Now, after building, I get the buildid as my revision number and release type appended.



Here are the screen shots showing configuration of both variables.



Settings for BuildId variableSettings for ReleaseType variable





Please accept your reply as answer once you can, which will be beneficial to other community members reading this thread.
– Cece Dong - MSFT
yesterday






By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

sYG,DlpALTbVCAcVb2I4RKYQUg21OeO G3CAbCGWvnj84w8bBiTAbah30tX
eb vr J8yTzKyC2ojHgaZ,4tj IV53uckBrlcyD q6UABuW6G,lDje9xZ,mx,azUI,viPwnSiFzTQF19SMS431 GEQwJKw E

Popular posts from this blog

Makefile test if variable is not empty

Visual Studio Code: How to configure includePath for better IntelliSense results

Will Oldham