如何在TeamCity构建步骤中提供汇编版本

时间:2015-04-14 09:29:51

标签: teamcity

我需要将程序集版本号添加到TeamCity构建的工件的名称中。

我的计划是在构建后重命名工件但是如何在buildstep中访问程序集版本?

是否已有标准TC参数?如果没有,那么我如何将信息从我的MSBuild发送到TC?

1 个答案:

答案 0 :(得分:0)

我最近刚刚自己做了这件事,这就是我设法做到的。

如果您正在构建项目(* .csproj),那么您可以编辑csproj(在记事本中)。 在“AfterBuild”目标

中添加以下内容

注意:请确保它不在评论输出栏中,默认为

<Target Name="AfterBuild">
    <GetAssemblyIdentity AssemblyFiles="bin\MyAssembly.dll">
        <Output TaskParameter="Assemblies" ItemName="MyAssembly"/>
    </GetAssemblyIdentity>
    <Message Text="Setting build number back to TeamCity... " Importance="high"/>
    <TeamCitySetBuildNumber BuildNumber="$(MyAssembly.Version)" />
</Target>

如果您正在构建解决方案,那么创建一个从TeamCity构建的MSBUILD .proj文件,该文件首先调用构建解决方案,然后将版本设置为TeamCity中的BuildNumber。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="SetBuildNumber" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <Target Name="Build">
    <Message Text="Build task called... " Importance="high"/>
    <MSBuild Projects="$(teamcity_build_checkoutDir)\MySolution.sln" ToolsVersion="12.0" Properties="Configuration=Release;OutputPath=bin;"/>
  </Target>

  <Target Name="SetBuildNumber" DependsOnTargets="Build">
    <GetAssemblyIdentity AssemblyFiles="bin\MyAssembly.dll">
      <Output TaskParameter="Assemblies" ItemName="MyAssembly"/>
    </GetAssemblyIdentity>
    <Message Text="Setting build number back to TeamCity... " Importance="high"/>
    <TeamCitySetBuildNumber BuildNumber="$(MyAssembly.Version)" />
  </Target>

</Project>

使用上面的示例,将其放在MySolution.proj等文件中。告诉TeamCity使用MSBuild Runner和Build MySolution.proj并保留目标空白(将使用proj文件中设置的默认值),这将运行SetBuildNumber目标,而目标依赖于Build,因此将调用Build第一。这将使用指定的参数构建在“Build”目标中指定的解决方案,然后这将运行“SetBuildNumber”,它将获取指定dll的AssemblyVersion,并将消息发送回TeamCity以更新BuildNumber(%build。数字%)变量。

希望这有帮助。