我正在尝试设置要在TeamCity构建运行中打包的项目。为了实现这一点,我在TeamCity构建中有一个自定义参数设置。 参数是项目名称的集合,在运行构建时会提示从预定义的值集(项目名称)中进行选择。
为了举例,我们假设这个自定义参数是:
ProjectToPackage: Project1, Project2, Project3
稍后在构建步骤nuget pack中我想使用此参数来决定要打包的项目。所以,在我的规范文件中:
trunk/*/*.csproj
这是包所有项目,我现在想要反映自定义参数选择,如下所示:
trunk/*/%ProjectToBuild%.csproj
现在,如果选择多个值,这显然不会起作用,例如在选择多个值的情况下,参数是","已分隔的字符串,例如 Project1 和 Project2 , ProjectToPackage 将是" Project1,Project2" ,结果规范文件选择将变为:
trunk/*/Project1, Project2.csproj
当然失败了。
所以我正在寻找一种能够输入项目名称的方法,以便在TeamCity构建时打包。
答案 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>