如何在自定义构建时将项目设置为在 Team City 中打包 运行

How to set projects to package in Team City on custom build run

我正在尝试设置要在 TeamCity 构建中打包的项目 运行。为此,我在 TeamCity 构建中设置了自定义参数。 参数是一组项目名称,在 运行 构建时被提示从预定义的一组值(项目名称)中选择。

为举例起见,假设此自定义参数为:

ProjectToPackage: Project1, Project2, Project3

稍后在构建步骤 nuget pack 中我想使用此参数来决定打包哪些项目。因此,在规范文件中我有:

trunk/*/*.csproj

这是打包所有项目,我现在想要反映自定义参数选择,像这样:

trunk/*/%ProjectToBuild%.csproj

现在,如果选择了多个值,这显然不起作用,因为在选择多个值的情况下,参数是“,”分隔的字符串,e.g.if Project1并且选择了 Project2ProjectToPackage 将是 "Project1, Project2",因此规范文件选择将转向:

trunk/*/Project1, Project2.csproj

这当然失败了。

所以我正在寻找一种方法来输入项目名称以作为 TeamCity 构建的结果进行打包。

为了完成这个必须编写一些 MSBuild 脚本。 考虑到有自定义参数设置,其中列出了名称为 ProjectsToBuild 的所有项目 packaged,这里是完成这项工作的 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>