如何在自定义构建时将项目设置为在 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并且选择了 Project2,ProjectToPackage 将是 "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>
我正在尝试设置要在 TeamCity 构建中打包的项目 运行。为此,我在 TeamCity 构建中设置了自定义参数。 参数是一组项目名称,在 运行 构建时被提示从预定义的一组值(项目名称)中选择。
为举例起见,假设此自定义参数为:
ProjectToPackage: Project1, Project2, Project3
稍后在构建步骤 nuget pack 中我想使用此参数来决定打包哪些项目。因此,在规范文件中我有:
trunk/*/*.csproj
这是打包所有项目,我现在想要反映自定义参数选择,像这样:
trunk/*/%ProjectToBuild%.csproj
现在,如果选择了多个值,这显然不起作用,因为在选择多个值的情况下,参数是“,”分隔的字符串,e.g.if Project1并且选择了 Project2,ProjectToPackage 将是 "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>