Ian Vink
Ian Vink

Reputation: 68810

TeamCity with MSBuild - Getting the Build folder name?

The following MSBuild script works, but I have to hard code the work folder (GetAssemblyIdentity line) that TeamCity uses.

How do I get "C:\TeamCity\buildAgent\work\cb8ffbe14de0bdf3" dynamically?

<Target Name="GetVersion">
<GetAssemblyIdentity AssemblyFiles="C:\TeamCity\buildAgent\work\cb8ffbe14de0bdf3\AAA.Online.Web\bin\AAA.Online.Web.dll">
  <Output TaskParameter="Assemblies" ItemName="myAssemblyInfo"/>
</GetAssemblyIdentity>
<PropertyGroup>
  <Pattern>(\d+)\.(\d+)</Pattern>
  <In>%(myAssemblyInfo.Version)</In>
  <OutVersion>$([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern)))</OutVersion>
</PropertyGroup>
</Target>

Upvotes: 2

Views: 635

Answers (1)

James Woolfenden
James Woolfenden

Reputation: 6681

You could use the built-in teamcity variables. Change your code to:

<Target Name="GetVersion">
<GetAssemblyIdentity AssemblyFiles="$(teamcity_build_checkoutDir)\AAA.Online.Web\bin\AAA.Online.Web.dll">
  <Output TaskParameter="Assemblies" ItemName="myAssemblyInfo"/>
</GetAssemblyIdentity>

<Message Text="Path is $(teamcity_build_checkoutDir)"/>

<PropertyGroup>
  <Pattern>(\d+)\.(\d+)</Pattern>
  <In>%(myAssemblyInfo.Version)</In>
  <OutVersion>$([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern)))</OutVersion>
</PropertyGroup>
</Target>

Upvotes: 1

Related Questions