使用MSBuild的TeamCity-获取生成文件夹名称?

使用MSBuild的TeamCity-获取生成文件夹名称?,msbuild,teamcity,teamcity-8.0,Msbuild,Teamcity,Teamcity 8.0,以下MSBuild脚本可以工作,但我必须硬编码TeamCity使用的工作文件夹(GetAssemblyIdentityline) 如何动态获取“C:\TeamCity\buildAgent\work\cb8ffbe14de0bdf3” <Target Name="GetVersion"> <GetAssemblyIdentity AssemblyFiles="C:\TeamCity\buildAgent\work\cb8ffbe14de0bdf3\AAA.Online.Web\

以下MSBuild脚本可以工作,但我必须硬编码TeamCity使用的工作文件夹(GetAssemblyIdentityline)

如何动态获取“C:\TeamCity\buildAgent\work\cb8ffbe14de0bdf3”

<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>

(\d+)\(\d+)
%(myAssemblyInfo.Version)
$([System.Text.RegularExpressions.Regex]::匹配($(In),$(Pattern)))

您可以使用内置的teamcity变量。 将代码更改为:

<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>

(\d+)\(\d+)
%(myAssemblyInfo.Version)
$([System.Text.RegularExpressions.Regex]::匹配($(In),$(Pattern)))

是否可以使用$(MSBuildProjectDirectory)属性使用相对于MSBuild项目文件的路径?可以在命令行上将teamcity.build.working.dir插入到MSBuild生成参数中(可以在MSBuild命令行上使用类似“/p:AgentWorkFolder=teamcity.build.working.dir”的内容)。请参阅然后使用。。。目标中的GetAssemblyIdentity AssemblyFiles=“$(AgentWorkFolder)\…”。