Ejemplos de biblioteca cliente de C# para clientes y servicios SOAP
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Este artículo contiene ejemplos que muestran cómo ampliar e integrar con Azure DevOps Server y Azure DevOps Services mediante los clientes SOAP heredados. Estos clientes solo están disponibles en la versión de .NET Framework de los clientes.
Importante
Para el nuevo desarrollo, consulte los clientes basados en JSON que se describen en las bibliotecas cliente de .NET.
Requisitos previos
Los ejemplos de esta página requieren los siguientes paquetes NuGet:
- Microsoft.TeamFoundationServer.ExtendedClient
- Microsoft.TeamFoundationServer.Client
- Microsoft.VisualStudio.Services.Client
- Microsoft.VisualStudio.Services.InteractiveClient
Ejemplo: Uso del cliente basado en SOAP
// 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);
}
}
}
}
Autenticación
Para cambiar el método de autenticación a Azure DevOps, cambie el tipo VssCredential pasado a Vss Conectar ion al crearlo.
Autenticación de token de acceso personal para servicios SOAP
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);
}
}
Autenticación de Microsoft Entra para servicios SOAP
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);
}
}
Mensaje de inicio de sesión de Visual Studio (cuenta Microsoft o Con respaldo de Microsoft Entra) para servicios SOAP
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);
}
}
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de