Как получить зависимые сжатые файлы решения с помощью VSTS - PullRequest
0 голосов
/ 13 ноября 2018

Я использую API-интерфейс VSTS 2018 для получения сжатых файлов решений на основе sourcepath и sourceversion.Чтобы получить sourceVersion, я запрашиваю его, используя имя teamproject и buildId.

Проблема в том, что мне также нужно получить все зависимые проекты.Вопрос в том, как я могу получить teamProject и buildId для всех зависимых проектов в архивированном решении, чтобы я также мог получить архивированные файлы для них.Вот код для получения сжатого файла решения:

 internal async Task<string> GetSolutionFromSource(string sourcePath, string sourceVersion)
        {
            var solutionFile = string.Empty;
            using (var handler = new HttpClientHandler { Credentials = new NetworkCredential(tfsUser, tfsPass) })
            using (var client = new HttpClient(handler))
            {
                try
                {
                    client.BaseAddress = new Uri(tfsServer);
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/octet-stream"));

                    var url = $"DefaultCollection/_api/_versioncontrol/itemContentZipped?path={sourcePath}&version={sourceVersion}";
                    var solution = sourcePath.Substring(sourcePath.LastIndexOf('/') + 1);
                    var directory = CreateDirectory(solution, sourcePath);
                    var zipFile = string.Empty;

                    log.Debug("TFS: streaming zipped solution ");
                    zipFile = $"{directory}\\solution.zip";

                    using (var file = await client.GetStreamAsync(url).ConfigureAwait(false))
                    using (var fs = new FileStream(zipFile, FileMode.OpenOrCreate))
                    {
                        await file.CopyToAsync(fs);
                        fs.Flush();                       
                    }

                    log.Debug("TFS: Extracting zipped solution to a temp folder");
                    ExtractZip(zipFile, directory);
                    solutionFile = FindSolutionFile(solution, directory);
                    log.Debug("TFS: Found solution file at " + solutionFile);
                }
                catch (Exception ex)
                {
                    log.Error(ex);
                    throw ex;
                }

                return solutionFile;
            }
        }
...