.NET 客户端库

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

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

小窍门

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

依赖项关系图

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

.NET 客户端库的功能

适用于 Azure DevOps 的 .NET 客户端库提供了多个关键功能,使你可以轻松地从 Windows 应用程序和服务与 Azure DevOps 中的服务集成:

  • 可从 NuGet.org 下载:通过从 NuGet.org 下载库轻松导入 Visual Studio 项目。
  • 已获得重新分发许可:库已获得应用和服务中重新分发的许可。 可以查看 许可证 以获取更多详细信息。
  • 访问 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 包库

REST 包

下表列出了可用于通过公共 REST API 访问各种服务的 .NET 客户端库。 可以从 NuGet.org 下载这些包,并提供与 Azure DevOps 集成的必需二进制文件。

软件包和说明 二进制文件
Microsoft.VisualStudio.Services.Client
通过公共 REST API(例如组织、配置文件、标识、安全性等)提供对共享平台服务的访问权限。
Microsoft.VisualStudio.Services.WebApi.dllMicrosoft.VisualStudio.Services.Common.dllMicrosoft.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.dllMicrosoft.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 的 API 的访问权限,这对于较新的 REST API 中不可用的某些功能是必需的。 但是,此包不支持 .NET Standard,仅用于 REST API 不提供所需功能时使用。

香皂包装

下表列出了可用于通过 SOAP API 访问各种服务的 .NET 客户端库。 可以从 NuGet.org 下载这些包,并提供与 Azure DevOps 集成的必需二进制文件。 仅当 REST API 不提供所需的功能时,才使用这些包,例如,在 TFVC 中创建工作区。

软件包和描述 二进制文件
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 示例

参考文献

更多信息和 up-to-date 参考文档,请参阅 .NET API 浏览器

示例

查看 .NET 示例页上的示例

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

已知问题

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

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

    ...

}

使用 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 版本。