.NET 客户端库

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

客户端库适用于构建与 Azure DevOps 集成的 Windows 应用和服务的 .NET 开发人员。 客户端库与工作项跟踪、版本控制、生成和其他服务集成。 这些包取代了传统的 TFS 客户端 OM 安装程序,并可以轻松获取和重新分发应用或服务所需的库。

提示

使用 .NET 客户端库示例和 Azure DevOps API 参考查找相应的 .NET 客户端类和 API 方法。

依赖项关系图

依赖项关系图显示 Services.Client、Services.InteractiveClient 和 TeamFoundationServer.Client 之间的关系。

功能

  • 可从 NuGet.org 下载,并可轻松导入到 Visual Studio 项目中
  • 库在应用和服务中获得重新分发许可(查看许可证
  • 访问传统客户端对象模型 API 和 REST API

注意

基于 REST 的客户端仅适用于 Azure DevOps 和 TFS 2015 或更高版本。 有关使用客户端库扩展和集成 Azure DevOps 的详细信息,请参阅 扩展 Team Foundation

包和 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
15.131.x versions >= TFS 2018 Update 1
15.112.x versions >= TFS 2017 Update 1
14.102.x versions >= TFS 2015 Update 3
14.95.x versions >= TFS 2015 Update 2
14.89.x versions >= TFS 2015 Update 1
14.83.x versions >= TFS 2015

有关最新的预览版本,请参阅 NuGet 包库

REST 包

包和说明 二进制文件
Microsoft.VisualStudio.Services.Client
通过公共 REST API(例如组织、配置文件、标识、安全性等)提供对共享平台服务的访问权限。
Microsoft.VisualStudio.Services.WebApi.dllMicrosoft.VisualStudio.Services.Common.dll、、 Microsoft.TeamFoundation.Common.dll
Microsoft.TeamFoundationServer.Client
通过公共 REST API 提供对版本控制、工作项跟踪、生成等的访问。
Microsoft.TeamFoundation.Build2.WebApi.dll、、Microsoft.TeamFoundation.Core.WebApi.dllMicrosoft.TeamFoundation.WorkItemTracking.Process.WebApi.dllMicrosoft.TeamFoundation.SourceControl.WebApi.dllMicrosoft.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
Microsoft.TeamFoundation.DistributedTask.Common.Contracts
提供用于通过公共 REST API 访问分布式任务服务的模型。
Microsoft.TeamFoundation.DistributedTask.Common.Contracts.dll
Microsoft.TeamFoundation.DistributedTask.WebApi
通过公共 REST API 提供对分布式任务服务的访问权限。
Microsoft.TeamFoundation.DistributedTask.WebApi.dll
Microsoft.VisualStudio.Services.ServiceHooks.WebApi
通过公共 REST API 提供对服务挂钩服务的访问权限。
Microsoft.VisualStudio.Services.ServiceHooks.WebApi.dll
Microsoft.VisualStudio.Services.Gallery.WebApi
通过公共 REST API 提供对库服务的访问权限。
Microsoft.VisualStudio.Services.Gallery.WebApi.dll
Microsoft.VisualStudio.Services.Notifications.WebApi
通过公共 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
Microsoft.TeamFoundation.PublishTestResults
此任务可用于在 Azure DevOps 上发布测试结果和上传测试附件。 此包支持以下结果格式:1。 JUnit - 从 Junit 项目发布测试,2. NUnit - 从 Nunit 项目发布测试,3。 VSTest - 从 Visual Studio 项目发布测试,4。 Xunit - 从 Xunit 项目发布测试
Microsoft.TeamFoundation.TestClient.PublishTestResults.dll
Microsoft.VisualStudio.Services.Audit.WebApi
通过公共 REST API 提供对审核服务的访问权限。
Microsoft.VisualStudio.Services.Audit.WebApi.dll
Microsoft.Azure.Pipelines.Policy.Client
通过公共 REST API 提供对管道审批、检查和授权的访问权限。
Microsoft.Azure.Pipelines.Policy.Client.dll

提示

如果你有使用 TFS 客户端对象模型的现有 Windows 应用程序或服务,请使用 Microsoft.TeamFoundationServer.ExtendedClient

Soap 包

包和说明 二进制文件
Microsoft.TeamFoundationServer.ExtendedClient
使用和管理客户端应用程序中的版本控制、工作项和生成和其他资源。 此包不支持 Net Standard 客户端 OM。 仅在 REST API 不提供所需的功能时使用此包(例如,在 TFVC 中创建工作区)
Microsoft.TeamFoundation.Build.Client.dll、、Microsoft.TeamFoundation.DeleteTeamProject.dllMicrosoft.TeamFoundation.Diff.dllMicrosoft.TeamFoundation.Git.Client.dllMicrosoft.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 客户端库的 .NET Standard 版本中不可用。 使用 .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 示例

参考

有关详细信息和最新的参考文档,请参阅 .NET API 浏览器

示例

查看 .NET 示例页上的示例,或直接查看 .NET GitHub 存储库上的示例。

有关 NuGet 包的详细信息,请参阅 Microsoft.VisualStudio.Services.Client

已知问题

在单线程单元中使用 Azure DevOps OM 时,不会显示交互式身份验证对话框(STA)

如果代码从 单线程单元 (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);
    await vssConnection.ConnectAsync();

    ...

}

使用 Azure DevOps OM 的 NetStandard 2.0 版本

对于 NuGet 包的版本 16.143.1,我们支持 NetStandard 2.0。 这些包与 Azure DevOps Server 2019 RTW 相关联,并与 Azure DevOps 完全兼容。

Microsoft.TeamFoundationServer.ExtendedClient 包没有 NetStandard 支持

Microsoft.TeamFoundationServer.ExtendedClient 不支持符合 NetStandard 的版本。

重要

此包包括较旧的 SOAP 对象模型,我们将其替换为较新的 REST 对象模型。 我们不再投资较旧的 SOAP 对象模型,也没有计划创建它的 NetStandard 版本。