我正在使用 BuildHttpClient 的 .GetDefinitionAsync 和 .CreateDefinitionAsync 来克隆 VSTS 构建定义。这工作正常,但我想在项目的根文件夹之外的不同文件夹中创建构建定义。我可以通过“管理文件夹”链接网络添加文件夹,但如何以编程方式执行此操作?
我尝试过以下方法:
buildDef = JsonConvert.DeserializeObject<BuildDefinition>(json);
buildDef.BuildNumberFormat = buildNumFormat;
buildDef.Name = newBuildDefName;
Uri tfsURI = new Uri(CollectionReleaseURL);
buildDef.Url = tfsURI.ToString();
await buildClient.CreateDefinitionAsync(buildDef, project);
其中Collection发布路径为:
集合发布URL = @"http://my.tfs.server8080/tfs/DefaultCollection/Project/Product/Release http://my.tfs.server8080/tfs/DefaultCollection/Project/Product/Release";
但是当我运行该程序时,它只是将新的构建定义放入以下文件夹中:
@”http://my.tfs.server8080/tfs/DefaultCollection/Project http://my.tfs.server8080/tfs/DefaultCollection/Project"
如何将构建定义克隆到 ../Product/Release 文件夹?
更新:我使用以下内容来克隆构建定义,但它没有复制构建步骤!有人知道这是为什么吗?
private static async Task CloneBuildDefAsync(int buildDefId, string newBuildDefName, string buildNumFormat, string sourceControlPath, string URLpath)
{
var buildClient = createClient();
var buildDef = (await buildClient.GetDefinitionAsync(project, buildDefId)) as BuildDefinition;
buildDef.Project = null;
var json = JsonConvert.SerializeObject(buildDef);
json = json.Replace(sourceControlMainline, sourceControlPath);
buildDef = JsonConvert.DeserializeObject<BuildDefinition>(json);
buildDef.BuildNumberFormat = buildNumFormat;
buildDef.Name = newBuildDefName;
buildDef.Path = URLpath;
await buildClient.CreateDefinitionAsync(buildDef, project);
}
Seems to copy everything but the build step, everything else is cloned and updated perfectly: