Проблемы с подключением к серверу TFS2015 через веб-API - PullRequest
0 голосов
/ 10 февраля 2020

Я пытался подключиться к нашему серверу TFS2015 через веб-API. Я не делал этого раньше. Моя цель - получить последнюю успешную сборку, получить от него все наборы изменений, а для каждого набора изменений - информацию, из какой ветви он был перенаправлен в ветку выпуска. Я не могу подключиться к нему и не уверен, каков мой следующий шаг.

Это мой код:

private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            VssConnection connection = new VssConnection(new Uri("http://srv-tfs2015:8080/tfs/"), new VssCredentials(useDefaultCredentials: true));

            Microsoft.TeamFoundation.Build.WebApi.BuildHttpClient buildKlijent = connection.GetClient<Microsoft.TeamFoundation.Build.WebApi.BuildHttpClient>();

            var lastBuild = buildKlijent.GetLatestBuildAsync("Argosy", "Argosy32New");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

LastBuild содержит исключение VssResourceNotFountException с сообщением:

Расположение ресурса API 54481611-01f4-47f3-998f-160da0f0c229 не зарегистрировано on http://srv-tfs2015: 8080 / tfs / .

Сборка находится в командном проекте Argosy, который является частью ArgosyCollection на сервере и является определением сборки XAML. Не уверен, имеет ли это какое-то значение.

Можете ли вы помочь мне указать верное направление?

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Попробуйте изменить Uri, добавив имя коллекции проекта и @ charecter, например:

VssConnection connection = new VssConnection(new Uri(@"http://srv-tfs2015:8080/tfs/DefaultCollection"), myCredentials);
1 голос
/ 10 февраля 2020

В документации Get Latest сказано, что вы должны использовать rest api версии 5.1. Но TFS 2015 ( API и отображение версий TFS ) поддерживает только 2.4. Поэтому вы должны использовать Получить список сборок и определить последнюю сборку из полученного списка с помощью метода GetBuildsAsync.

В качестве примера для просмотра последних 10 сборок определений сборок:

private static void ListBuildDefinitions(string TeamProjectName)
{
    List<BuildDefinitionReference> buildDefs = BuildClient.GetDefinitionsAsync(TeamProjectName).Result;

    foreach(BuildDefinitionReference buildDef in buildDefs)
    {
       Console.WriteLine("+================BUILD DEFINITION=======================================================");
       Console.WriteLine(" ID:{0, -9}|NAME:{1, -35}|PATH:{2}", buildDef.Id, buildDef.Name, buildDef.Path);
       Console.WriteLine(" REV:{0, -8}|QUEUE:{1, -34}|QUEUE STATUS:{2}", buildDef.Revision, (buildDef.Queue != null) ? buildDef.Queue.Name : "", buildDef.QueueStatus);

       ListBuilds(TeamProjectName, buildDef);
   }
}

private static void ListBuilds(string TeamProjectName, BuildDefinitionReference buildDef)
{
   List<Build> builds = BuildClient.GetBuildsAsync(TeamProjectName, new List<int> { buildDef.Id }).Result;

   if (builds.Count > 0)
   {
       Console.WriteLine("+====================BUILDS================================================================================");
       Console.WriteLine("+    ID      |        NUMBER        |      STATUS     |     START DATE     |    FINISH DATE     | COMMITS");
       Console.WriteLine("+----------------------------------------------------------------------------------------------------------");

        for (int i = 0; i < builds.Count && i < 10; i++)
        {
            var changes = BuildClient.GetBuildChangesAsync(TeamProjectName, builds[i].Id).Result;
            Console.WriteLine(" {0, -12}|{1, -22}|{2, -17}|{3, -20}|{4, -20}|{5}", builds[i].Id, builds[i].BuildNumber, builds[i].Status,
                (builds[i].StartTime.HasValue) ? builds[i].StartTime.Value.ToString() : "",
                (builds[i].FinishTime.HasValue) ? builds[i].FinishTime.Value.ToString() : "", changes.Count);
        }
    }
    else
        Console.WriteLine("+=======================================================================================");
}

Проверьте доступные функции для TFS 2015 здесь: Документация по API REST до версии 4.1

...