Я делал одно и то же, что Мартин предлагал несколько раз (его блог бесполезен, кстати). Тем не менее, мне в конечном итоге понадобилось запускать каскадные сборки, подобные этой (основанные на некоторых других сложных правилах), и я создал специальную задачу для этого. Сделайте ваши сценарии сборки красивыми и простыми, что даст вам больше гибкости и возможностей инкапсуляции.
public override bool Execute()
{
IBuildDefinition[] buildDefinitions = BuildServer.QueryBuildDefinitions(ProjectName);
foreach (IBuildDefinition build in buildDefinitions)
{
if(build.Enabled) //I did a bunch of custom rules here
{
Log.LogMessage(String.Concat("Queuing build: ", build.Name));
BuildServer.QueueBuild(build);
}
}
return true;
}
В блоге Аарона Халльберга есть еще кое-что хорошее:
http://blogs.msdn.com/aaronhallberg/archive/2007/04/24/team-build-object-model-queueing-a-build.aspx