Поделиться через


Клиентские библиотеки .NET

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Клиентские библиотеки доступны разработчикам .NET, создающим приложения и службы Windows, которые интегрируются с Azure DevOps. Клиентские библиотеки интегрируются с отслеживанием рабочих элементов, управлением версиями, сборкой и другими службами. Эти пакеты упрощают получение и распространение библиотек, необходимых приложению или службе.

Подсказка

Найдите соответствующий клиентский класс и метод API .NET, используя Примеры клиентской библиотеки .NET и Справочник по API Azure DevOps.

Схема зависимостей

Схема зависимостей показывает связь между Services.Client, Services.InteractiveClient и TeamFoundationServer.Client.

Функции клиентских библиотек .NET

Клиентские библиотеки .NET для Azure DevOps предлагают несколько ключевых функций, которые упрощают интеграцию со службами в Azure DevOps из приложений и служб Windows:

  • Можно скачать с NuGet.org: Легко импортируйте библиотеки в проекты Visual Studio, скачивая их с NuGet.org.
  • Лицензированные для распространения: библиотеки лицензированы для распространения в ваших приложениях и сервисах. Вы можете просмотреть лицензию для получения дополнительной информации.
  • Доступ к API: Получите доступ к традиционным API-интерфейсам клиентской объектной модели и REST API для программного взаимодействия с Azure DevOps.

Таблица сопоставления версий пакета и Azure DevOps

В следующей таблице сопоставляется версии пакетов клиентских библиотек .NET с соответствующими версиями Azure DevOps Server. Используйте эту таблицу, чтобы определить, какая версия пакета соответствует вашей версии Azure DevOps.

Версия пакета Версия Azure DevOps
16.205.x versions >= Azure DevOps Server 2022
16.170.x versions >= Azure DevOps Server 2020
16.153.x versions >= Azure DevOps Server 2019 Update 1
16.143.x versions >= Azure DevOps Server 2019

Свежие предварительные версии можно найти в галерее пакетов NuGet #B0 #A1.

Пакеты REST

В следующей таблице перечислены клиентские библиотеки .NET, доступные для доступа к различным службам через общедоступные ИНТЕРФЕЙСы REST API. Эти пакеты можно скачать из NuGet.org и предоставить необходимые двоичные файлы для интеграции с Azure DevOps.

Пакеты и описание Двоичные файлы
Microsoft.VisualStudio.Services.Client
Предоставляет доступ к службам общей платформы через общедоступные REST API, такие как организация, профиль, идентификация, безопасность и другие.
Microsoft.VisualStudio.Services.WebApi.dll, Microsoft.VisualStudio.Services.Common.dll, Microsoft.TeamFoundation.Common.dll
Microsoft.TeamFoundationServer.Client
Предоставляет доступ к управлению версиями, отслеживанию рабочих элементов, сборке и многому другому через общедоступные ИНТЕРФЕЙСы REST API.
Microsoft.TeamFoundation.Build2.WebApi.dll, Microsoft.TeamFoundation.Core.WebApi.dll, Microsoft.TeamFoundation.WorkItemTracking.Process.WebApi.dll, Microsoft.TeamFoundation.SourceControl.WebApi.dll, Microsoft.TeamFoundation.TestManagement.WebApi.dll и так далее.
Microsoft.VisualStudio.Services.InteractiveClient
Поддерживает приложения, требующие интерактивного входа пользователем.
Microsoft.VisualStudio.Services.Client.Interactive.dll
Microsoft.VisualStudio.Services.Release.Client
Предоставляет доступ к службе выпуска через общедоступные интерфейсы REST API.
Microsoft.VisualStudio.Services.ReleaseManagement.WebApi.dll
#B0 Microsoft.TeamFoundation.DistributedTask.Common.Contracts #C1
Предоставляет модели, используемые для доступа к распределенной службе задач через публичные REST-интерфейсы.
Microsoft.TeamFoundation.DistributedTask.Common.Contracts.dll
Microsoft.TeamFoundation.DistributedTask.WebApi
Предоставляет доступ к распределенной службе задач через публичные интерфейсы REST API.
Microsoft.TeamFoundation.DistributedTask.WebApi.dll
Microsoft.VisualStudio.Services.ServiceHooks.WebApi
Предоставляет доступ к службе WebHooks через общедоступные REST API.
Microsoft.VisualStudio.Services.ServiceHooks.WebApi.dll
Microsoft.VisualStudio.Services.Gallery.WebApi
Предоставляет доступ к Службе галереи через общедоступные интерфейсы REST API.
Microsoft.VisualStudio.Services.Gallery.WebApi.dll
#B0 Microsoft.VisualStudio.Services.Notifications.WebApi #C1
Предоставляет доступ к службе уведомлений через общедоступные REST API.
Microsoft.VisualStudio.Services.Notifications.WebApi.dll
Microsoft.VisualStudio.Services.ExtensionManagement.WebApi
Обеспечивает доступ к службе управления расширениями через общедоступные REST-интерфейсы API.
Microsoft.VisualStudio.Services.ExtensionManagement.WebApi.dll
Microsoft.VisualStudio.Services.MemberEntitlementManagement.WebApi
Предоставляет доступ к службе управления правами участников через общедоступные интерфейсы REST API.
Microsoft.VisualStudio.Services.MemberEntitlementManagement.WebApi.dll
Microsoft.VisualStudio.Services.ServiceEndpoints.WebApi
Предоставляет доступ к конечным точкам службы через публичные REST API.
Microsoft.VisualStudio.Services.ServiceEndpoints.WebApi.dll
Microsoft.VisualStudio.Services.Search.Client
Предоставляет доступ к службе поиска через публичные интерфейсы REST API.
Microsoft.VisualStudio.Services.Search.Shared.WebApi.dll, Microsoft.VisualStudio.Services.Search.WebApi.dll
#B0 Microsoft.TeamFoundation.PublishTestResults #C1
Эту задачу можно использовать для публикации результатов теста и отправки вложения тестов в Azure DevOps. В этом пакете поддерживаются следующие форматы результатов: 1. JUnit — публикация тестов из проектов JUnit, 2. NUnit — публикация тестов из проектов NUnit, 3. VSTest — публикация тестов из проектов Visual Studio, 4. Xunit — публикация тестов из проектов Xunit.
Microsoft.TeamFoundation.TestClient.PublishTestResults.dll
#B0 Microsoft.VisualStudio.Services.Audit.WebApi #C1
Предоставляет доступ к Службе аудита через общедоступные REST API.
Microsoft.VisualStudio.Services.Audit.WebApi.dll
#B0 Microsoft.Azure.Pipelines.Policy.Client #C1
Предоставляет доступ к утверждениям потока, проверкам и авторизации через общедоступные интерфейсы REST API.
Microsoft.Azure.Pipelines.Policy.Client.dll

Подсказка

Если у вас есть существующее приложение или служба Windows, использующее клиентскую объектную модель TFS, используйте #B0. Этот пакет предоставляет доступ к старым API на основе SOAP, которые необходимы для некоторых функций, недоступных в более новых интерфейсах REST API. Однако этот пакет не поддерживает .NET Standard и предназначен для использования только в том случае, если интерфейсы REST API не предоставляют необходимые функциональные возможности.

Упаковка мыла

В следующей таблице перечислены клиентские библиотеки .NET, доступные для доступа к различным службам через API SOAP. Эти пакеты можно скачать из NuGet.org и предоставить необходимые двоичные файлы для интеграции с Azure DevOps. Используйте только эти пакеты, если интерфейсы REST API не предлагают необходимые функциональные возможности, например создание рабочих областей в TFVC.

#B0 Пакет и описание #C1 Бинарные файлы
Microsoft.TeamFoundationServer.ExtendedClient
Работа с управлением версиями, рабочими элементами, сборкой и другими ресурсами из клиентского приложения. Этот пакет не поддерживает OM клиента Net Standard. Используйте этот пакет только в том случае, если интерфейсы REST API не предлагают необходимые функциональные возможности (например, создание рабочих областей в TFVC).
Microsoft.TeamFoundation.Build.Client.dll, Microsoft.TeamFoundation.DeleteTeamProject.dll, Microsoft.TeamFoundation.Diff.dll, Microsoft.TeamFoundation.Git.Client.dll, Microsoft.TeamFoundation.SharePointReporting.Integration.dll, и т. д.

Установка

Установите из командной строки диспетчера пакетов NuGet:

PM> Install-Package Microsoft.TeamFoundationServer.ExtendedClient

Подключиться

Чтобы создать аутентифицированное подключение к Azure DevOps, получите HttpClient для службы, с которой вы хотите работать, а затем вызовите методы этой службы.

См. следующие примеры.

using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.Client;
using Microsoft.TeamFoundation.SourceControl.WebApi;
using Microsoft.VisualStudio.Services.WebApi;

const String c_collectionUri = "https://dev.azure.com/fabrikam";
const String c_projectName = "MyGreatProject";
const String c_repoName = "MyRepo";

Uri orgUrl = new Uri(c_collectionUri);

// Connect to Azure DevOps Services
VssConnection connection = new VssConnection(orgUrl, new VssBasicCredential(string.Empty, personalAccessToken));

// Get a GitHttpClient to talk to the Git endpoints
using (GitHttpClient gitClient = connection.GetClient<GitHttpClient>())
{
    // Get data about a specific repository
    var repo = gitClient.GetRepositoryAsync(c_projectName, c_repoName).Result;
}

Пути проверки подлинности, создающие интерактивное диалоговое окно, недоступны в версии .NET Standard клиентских библиотек .NET. При использовании версии .NET Standard укажите учетные данные более явно для проверки подлинности, как показано в следующем примере.

using System;
using Microsoft.TeamFoundation.SourceControl.WebApi;
using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.WebApi;

namespace ConsoleApp1
{
    class Program
    {
        const string collectionUri = "https://dev.azure.com/fabrikam";
        const string projectName = "MyGreatProject";
        const string repoName = "MyRepo";
        const string pat = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

        static void Main(string[] args)
        {
            var creds = new VssBasicCredential(string.Empty, pat);
            
            // Connect to Azure DevOps Services
            var connection = new VssConnection(new Uri(collectionUri), creds);
            
            // Get a GitHttpClient to talk to the Git endpoints
            using var gitClient = connection.GetClient<GitHttpClient>();
            
            // Get data about a specific repository
            var repo = gitClient.GetRepositoryAsync(projectName, repoName).Result;
        }
    }
}

Дополнительные примеры проверки подлинности см. в разделе Примеры .NET.

Ссылка

Дополнительные сведения и справочные материалы по up-to-date см. в браузере API .NET.

Образцы

Ознакомьтесь с примерами на нашей странице примеров .NET или непосредственно в нашем репозитории .NET GitHub.

Дополнительные сведения о пакетах NuGet см. в Microsoft.VisualStudio.Services.Client.

Известные проблемы

Диалоговое окно интерактивной проверки подлинности не отображается при использовании Azure DevOps OM в однопоточной модели (STA).

Диалоговое окно интерактивной аутентификации не отображается в случаях, когда ваш код выполняется в Single Threaded Apartment (STA). Эта проблема часто возникает в WPF приложениях. Чтобы обойти эту проблему, можно изменить метод инициализации на асинхронную и запрашивать проверку подлинности, как показано в следующем примере.

async void InitAzureDevOps()
{
    Uri _uri = new Uri("https://dev.azure.com/MyAccount/");

    var creds = new VssClientCredentials(new WindowsCredential(false),
                                         new VssFederatedCredential(false),
                                         CredentialPromptType.PromptIfNeeded);

    VssConnection vssConnection = new VssConnection(_uri, creds);
    CancellationTokenSource source = new CancellationTokenSource();
    CancellationToken token = source.Token;
    await vssConnection.ConnectAsync(token);

    ...

}

Использование NetStandard 2.0 версий OM Azure DevOps

Для версии 16.143.1 пакетов NuGet мы поддерживаем NetStandard 2.0. Эти пакеты коррелируются с Azure DevOps Server 2019 RTW и полностью совместимы с Azure DevOps.

Пакет Microsoft.TeamFoundationServer.ExtendedClient не поддерживает NetStandard

Microsoft.TeamFoundationServer.ExtendedClient не поддерживает версию с поддержкой NetStandard.

Это важно

Этот пакет включает в себя старую объектную модель SOAP, которую мы заменили новой объектной моделью REST. Мы больше не инвестируем в старую объектную модель SOAP и не планируем создать ее версию NetStandard.