Reputation: 68810
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
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