13

This is my nuspec file to get the package generated from teamcity. The version is actualy set by the teamcity variable.

<?xml version="1.0"?>
<package >
  <metadata>
    <id>Company.Name</id>
    <version>$version$</version>
    <title>Title</title>
    <authors>My Name</authors>
    <owners>We are the owners</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Support</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2013</copyright>
    <tags>Core</tags>
    <dependencies>
        <dependency id="Core.Assembly" version="[1.0.$teamcity.build.id$]" />   
    </dependencies>
  </metadata>
</package>

How would I replace the version with the current teamcity build id number? Tried with both $teamcity.build.id$ and %teamcity.build.id%

This did not work. I tried with $version$ as well. The version gets correctly replaced in the version tag of the package, but not on the dependency.

I want to use the same version of the package that is in the current build, so they have the same build number.

halfer
  • 19,824
  • 17
  • 99
  • 186
Kannaiyan
  • 12,554
  • 3
  • 44
  • 83

4 Answers4

13

Resolved with AssemblyInfo patcher from Teamcity Build Features.

To fix,

Configuration Steps -> Build Steps -> Add Build Feature (Button)

Add AssemblyInfo Patcher and give the version to 1.0.%teamcity.build.id% and that resolved the problem.

Having the dependent libraries at the version with the $version$ resolved it.

Hope it helps.

Kannaiyan
  • 12,554
  • 3
  • 44
  • 83
11

You don't need to replace it via TeamCity variables. Use the -version switch, something like:

nuget.exe pack <nuspec> -version %teamcity.build.id%

This way the nuspec version will be overridden at runtime.

infojolt
  • 5,244
  • 3
  • 40
  • 82
Manuel Spezzani
  • 1,041
  • 7
  • 15
3

I solved it by simply putting [$version$] in my dependency.

Jeff Dunlop
  • 893
  • 1
  • 7
  • 20
  • AssemblyInfo Patcher versions your dll as well. Otherwise dll will be on one version and nuget package will be on another version. – Kannaiyan Dec 10 '15 at 15:59
  • 1
    This worked for me. The key is to make sure the `-Version` switch is used on the `nuget pack` command. – craftworkgames Mar 06 '17 at 11:45
3

In TeamCity 9.1 You can override the version number in the "Nuget Pack" build step.

enter image description here

Jacob Brewer
  • 2,574
  • 1
  • 22
  • 25
  • This may be cumbersome to configure if you want to have same versions across all projects. Means you need to configure for each nuspec instead of one centralized location. – Kannaiyan Dec 31 '15 at 16:12