Я использую .GetDefinitionAsync и .CreateDefinitionAsync в BuildHttpClient для клонирования определения сборки VSTS.Это отлично работает, но я бы хотел создать def-сборку в другой папке, отличной от корневой папки проекта.Я могу добавить папки через веб-ссылку «Управление папками», но как я могу сделать это программно?
Я пробовал следующее:
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 - путь: CollectionReleaseURL = @ "http://my.tfs.server8080/tfs/DefaultCollection/Project/Product/Release";
, но когда я запускаю программу, она просто помещает новую сборку def в следующую папку: @" http://my.tfs.server8080/tfs/DefaultCollection/Project"
Как я могу клонировать сборку defв папку ../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);
}
Кажется, что копируется все, кроме шага сборки, все остальное клонируется и обновляется отлично: