【问题标题】:TeamCity with MSBuild - Getting the Build folder name?TeamCity 与 MSBuild - 获取构建文件夹名称?
【发布时间】:2014-10-24 19:34:19
【问题描述】:

以下 MSBuild 脚本有效,但我必须对 TeamCity 使用的工作文件夹(GetAssemblyIdentity 行)进行硬编码。

我如何动态地获得“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>

【问题讨论】:

  • 你可以使用相对于 MSBuild 项目文件的路径,使用 $(MSBuildProjectDirectory) 属性吗?
  • teamcitty.build.working.dir 可以在命令行上注入到 MSBuild 构建参数中(类似 "/p:AgentWorkFolder=teamcity.build.working.dir" 可以在 MSBuild 上使用命令行)。请参阅 confluence.jetbrains.com/display/TCD8/… 然后在您的目标中使用 ... GetAssemblyIdentity AssemblyFiles="$(AgentWorkFolder)\..."。

标签: msbuild teamcity teamcity-8.0


【解决方案1】:

您可以使用内置的 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>

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    相关资源
    最近更新 更多