有什么方法可以复制构建定义?我使用主线源控制方法,利用许多不同的分支来生活很短的时间(即几天到一周)。我真的很想复制一个构建模板,只需更改要构建的解决方案即可。有没有办法做到这一点?如何复制TFS 2010构建定义?
回答
你可以写一个加载项来做到这一点。下面是复制现有构建定义的代码:
static IBuildDefinition CloneBuildDefinition(IBuildDefinition buildDefinition)
{
var buildDefinitionClone = buildDefinition.BuildServer.CreateBuildDefinition(
buildDefinition.TeamProject);
buildDefinitionClone.BuildController = buildDefinition.BuildController;
buildDefinitionClone.ContinuousIntegrationType = buildDefinition.ContinuousIntegrationType;
buildDefinitionClone.ContinuousIntegrationQuietPeriod = buildDefinition.ContinuousIntegrationQuietPeriod;
buildDefinitionClone.DefaultDropLocation = buildDefinition.DefaultDropLocation;
buildDefinitionClone.Description = buildDefinition.Description;
buildDefinitionClone.Enabled = buildDefinition.Enabled;
buildDefinitionClone.Name = String.Format("Copy of {0}", buildDefinition.Name);
buildDefinitionClone.Process = buildDefinition.Process;
buildDefinitionClone.ProcessParameters = buildDefinition.ProcessParameters;
foreach (var schedule in buildDefinition.Schedules)
{
var newSchedule = buildDefinitionClone.AddSchedule();
newSchedule.DaysToBuild = schedule.DaysToBuild;
newSchedule.StartTime = schedule.StartTime;
newSchedule.TimeZone = schedule.TimeZone;
}
foreach (var mapping in buildDefinition.Workspace.Mappings)
{
buildDefinitionClone.Workspace.AddMapping(
mapping.ServerItem, mapping.LocalItem, mapping.MappingType, mapping.Depth);
}
buildDefinitionClone.RetentionPolicyList.Clear();
foreach (var policy in buildDefinition.RetentionPolicyList)
{
buildDefinitionClone.AddRetentionPolicy(
policy.BuildReason, policy.BuildStatus, policy.NumberToKeep, policy.DeleteOptions);
}
return buildDefinitionClone;
}
从您的消息中不清楚哪个模板是您的构建定义使用(默认,升级或实验室管理)。如果我理解正确,您希望轻松设置一个构建定义,该构建定义构建了相同的解决方案,但来自不同的分支。
有一件事,你可以尝试,而不是复制定义是编辑它。当分支死亡时,重命名构建定义(可能有助于报告),更改构建的工作区映射,您应该完成。
谢谢,拉迪斯劳
我只是需要复制构建定义,并发现上面的Jim的回答会有帮助。然而,作为TFS API的新手,我需要帮助连接到服务器并通过代码获取现有的构建定义。这两个环节上帮助填补空白:
我结束了使用TFS电动工具2010年9月,其含有克隆构建定义命令。 – devlife 2010-11-03 22:47:11
您也可以下载新的TFS 2010 power tools。它可以选择克隆构建定义。
为例见http://msmvps.com/blogs/molausson/archive/2010/10/21/clone-a-build-definition.aspx
注:请注意,克隆只能当你没有弹出生成窗口。
您可以右键单击构建定义并选择“克隆构建定义”来复制定义文件。然后你可以从那里编辑它。
以下工具(VS加载项),将满足您的要求>
社区TFS构建经理
http://visualstudiogallery.msdn.microsoft.com/16bafc63-0f20-4cc3-8b67-4e25d150102c
这里是soltion,如果你想生成定义从一个团队项目移到其他团队项目。
public void MoveBuild(string fromTeamProject, string toTeamProject, string buildName, string newBuildName)
{
var _server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new
Uri("http://Mytfs:8080/defaultcollection"));
IBuildServer _buildServer = _server.GetService<IBuildServer>();
var buildDetails = _buildServer.QueryBuildDefinitions(fromTeamProject);
foreach (var fromBuild in buildDetails)
{
if (fromBuild.Name != buildName) continue;
var newBuildDefinition = _buildServer.CreateBuildDefinition(toTeamProject);
newBuildDefinition.Name = !string.IsNullOrEmpty(newBuildName) ? newBuildName : fromBuild.Name;
newBuildDefinition.BuildController = fromBuild.BuildController;
// This finds the template to use
foreach (var mapping in fromBuild.Workspace.Mappings)
{
newBuildDefinition.Workspace.AddMapping(
mapping.ServerItem, mapping.LocalItem, mapping.MappingType, mapping.Depth);
}
newBuildDefinition.DefaultDropLocation = fromBuild.DefaultDropLocation;
newBuildDefinition.Description = fromBuild.Description;
// buildDefinition.Workspace.AddMapping(build.Workspace.);
newBuildDefinition.Process = _buildServer.QueryProcessTemplates(fromBuild)[2];
newBuildDefinition.ProcessParameters = fromBuild.ProcessParameters;
newBuildDefinition.Enabled = false;
newBuildDefinition.Save();
}//end of for each loop
}
- 1. TFS 2010在TFS 2010中构建定义
- 2. TFS 2010构建定义 - 复制依赖到构建目标文件夹
- 3. 在TFS 2010中编辑构建定义
- 4. 生成tfs 2010的构建定义
- 5. TFS 2010跟踪构建定义更改?
- 6. 自定义构建摘要TFS 2010
- 7. 导出TFS 2010构建定义
- 8. 定制TFS 2010构建过程
- 9. TFS 2010定制构建步骤
- 10. Windows Azure TFS构建定义“复制构建输出...”#/问题
- 11. TFS构建2010年 - 自定义二进制位置和SharePoint WSP
- 12. 如何在TFS 2010中调试自定义构建过程?
- 13. Tfs构建定义
- 14. 使用TFS 2010运行TFS 2008构建定义
- 15. TFS 2010构建:Microsoft.TeamFoundation.Build.Workflow.Activities.SyncWorkspace
- 16. 如何解决TFS 2010构建通知
- 17. 创建TFS 2010构建定义需要帮助
- 18. TFS 2010 Build定义
- 19. TFS构建定义问题
- 20. 如何将TFS构建定义移动/复制到新的团队项目?
- 21. TFS 2010构建时机
- 22. TFS 2010构建服务
- 23. 如何设置TFS 2013构建定义从Git标记构建?
- 24. 关于TFS 2010中的构建定义文件(XAML)
- 25. TFS 2010在构建定义文件中隐藏 - 错误
- 26. TFS 2010构建定义只输出DLL和PDB?
- 27. 在一个单一的构建定义TFS 2010
- 28. 是否可以导出TFS 2010构建定义?
- 29. 如何将多个TFS 2012构建定义链接到一个构建定义
- 30. 将TFS 2013 xaml构建定义转换为TFS 2015 vNext构建
在linqpad,真棒得到了这个工作=) – Maslow 2014-02-11 20:07:07