Freigeben über


C#-Clientbibliotheksbeispiele für SOAP-Clients und -Dienste

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

Dieser Artikel enthält Beispiele, die Ihnen zeigen, wie Sie azure DevOps Server und Azure DevOps Services mithilfe der älteren SOAP-Clients erweitern und integrieren. Diese Clients sind nur in der .NET Framework-Version der Clients verfügbar.

Wichtig

Informationen zur neuen Entwicklung finden Sie in den JSON-basierten Clients, die in .NET-Clientbibliotheken beschrieben sind.

Voraussetzungen

Beispiele auf dieser Seite erfordern die folgenden NuGet-Pakete:

Beispiel: Verwenden des SOAP-basierten Clients

// https://www.nuget.org/packages/Microsoft.TeamFoundationServer.ExtendedClient/
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;

/// <summary>
/// This sample creates a new work item query under 'MyQueries', runs the query, and then sends the results to the console.
/// </summary>
public static void SampleSOAP()
{
    // create TfsTeamProjectCollection instance using default credentials
    using (TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(collectionUri)))
    {
        // get the WorkItemStore service
        WorkItemStore workItemStore = tpc.GetService<WorkItemStore>();

        // get the project context for the work item store
        Project workItemProject = workItemStore.Projects[teamProjectName];

        // search for the 'My Queries' folder
        QueryFolder myQueriesFolder = workItemProject.QueryHierarchy.FirstOrDefault(qh => qh is QueryFolder && qh.IsPersonal) as QueryFolder;
        if (myQueriesFolder != null)
        {
            // search for the 'SOAP Sample' query
            string queryName = "SOAP Sample";
            QueryDefinition newBugsQuery = myQueriesFolder.FirstOrDefault(qi => qi is QueryDefinition && qi.Name.Equals(queryName)) as QueryDefinition;
            if (newBugsQuery == null)
            {
                // if the 'SOAP Sample' query does not exist, create it.
                newBugsQuery = new QueryDefinition(queryName, "SELECT [System.Id],[System.WorkItemType],[System.Title],[System.AssignedTo],[System.State],[System.Tags] FROM WorkItems WHERE [System.WorkItemType] = 'Bug' AND [System.State] = 'New'");
                myQueriesFolder.Add(newBugsQuery);
                workItemProject.QueryHierarchy.Save();
            }

            // run the 'SOAP Sample' query
            WorkItemCollection workItems = workItemStore.Query(newBugsQuery.QueryText);
            foreach (WorkItem workItem in workItems)
            {
                // write work item to console
                Console.WriteLine("{0} {1}", workItem.Id, workItem.Fields["System.Title"].Value);
            }
        }
    }
}

Authentifizierung

Um die Authentifizierungsmethode für Azure DevOps zu ändern, ändern Sie den VssCredential-Typ, der beim Erstellen an Vss Verbinden ion übergeben wurde.

Authentifizierung des persönlichen Zugriffstokens für SOAP-Dienste

public static void PersonalAccessTokenSoapSample()
{
    // Authenticate using Personal Access Token
    VssBasicCredential vssBasicCredential = new VssBasicCredential(string.Empty, pat);
    using (TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(collectionUri), vssBasicCredential))
    {
        tpc.Authenticate();
        Console.WriteLine(tpc.InstanceId);
    }
}

Microsoft Entra-Authentifizierung für SOAP-Dienste

public static void AADSoapSample()
{
    // Authenticate using Azure Active Directory credential (requires a Azure AD-backed organization)
    using (TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(collectionUri), new VssAadCredential()))
    {
        tpc.Authenticate();
        Console.WriteLine(tpc.InstanceId);
    }
}

Visual Studio-Anmeldeaufforderung (Microsoft-Konto oder Microsoft Entra gesichert) für SOAP-Dienste

public static void MicrosoftAccountSample()
{
    // authenticate using Visual Studio sign-in prompt
    using (TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(collectionUri), new VssClientCredentials()))
    {
        tpc.Authenticate();
        Console.WriteLine(tpc.InstanceId);
    }
}