如何在自定义构建运行中设置要在Team City中打包的项目

时间:2017-02-23 08:15:30

标签: continuous-integration teamcity

我正在尝试设置要在TeamCity构建运行中打包的项目。为了实现这一点,我在TeamCity构建中有一个自定义参数设置。 参数是项目名称的集合,在运行构建时会提示从预定义的值集(项目名称)中进行选择。

为了举例,我们假设这个自定义参数是:

ProjectToPackage: Project1, Project2, Project3

稍后在构建步骤nuget pack中我想使用此参数来决定要打包的项目。所以,在我的规范文件中:

trunk/*/*.csproj

这是包所有项目,我现在想要反映自定义参数选择,如下所示:

trunk/*/%ProjectToBuild%.csproj

现在,如果选择多个值,这显然不会起作用,例如在选择多个值的情况下,参数是","已分隔的字符串,例如 Project1 Project2 ProjectToPackage 将是" Project1,Project2" ,结果规范文件选择将变为:

trunk/*/Project1, Project2.csproj

当然失败了。

所以我正在寻找一种能够输入项目名称的方法,以便在TeamCity构建时打包。

1 个答案:

答案 0 :(得分:0)

为了完成这个必须编写一些MSBuild脚本。 考虑到有自定义参数设置,其中列出名为packaged的所有项目为ProjectsToBuild,这里是执行此项工作的MSBuild target

<Target Name="Pack">
    <ItemGroup>
      <_SelectedProjectItem Include="$(ProjectsToBuild)" />
      <ProjectsToPack Include="$(MSBuildProjectDirectory)\*\%(_SelectedProjectItem.Identity).csproj" />
    </ItemGroup>

    <Exec Command="$(PathToNuGetExe) pack %(ProjectsToPack.FullPath) -OutputDirectory $(OutDir) -IncludeReferencedProjects" />
  </Target>