【问题标题】:How to set projects to package in Team City on custom build run如何在自定义构建运行时将项目设置为在 Team City 中打包
【发布时间】:2017-11-29 20:05:13
【问题描述】:

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

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

ProjectToPackage: Project1, Project2, Project3

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

trunk/*/*.csproj

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

trunk/*/%ProjectToBuild%.csproj

如果选择了多个值,这显然不起作用,例如在选择多个值的情况下,参数是“,”分隔字符串,例如如果 Project1 和 Project2 选中后,ProjectToPackage 将是 "Project1, Project2",因此规范文件选择将变为:

trunk/*/Project1, Project2.csproj

当然失败了。

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

【问题讨论】:

    标签: continuous-integration teamcity


    【解决方案1】:

    为了实现这一点,不得不编写一些 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      相关资源
      最近更新 更多