Share via


Connexion à Team Foundation Server à partir d'une application console

Vous pouvez vous connecter par programmation à un serveur qui exécute Team Foundation et accéder aux projets d'équipe de ce serveur si vous utilisez l'exemple suivant. Si vous changez l'exemple, vous pouvez utiliser les services décrits dans Getting Additional Team Foundation Services plus loin dans cette rubrique. Vous pouvez également agir au nom d'autres personnes à l'aide de l'emprunt d'identité, comme cela est décrit dans Acting on Behalf of Another User (Impersonation) plus loin dans cette rubrique.

Dans cette rubrique

Exemple

Vous pouvez répertorier les collections de projets d'équipe et les projets d'équipe qu'ils contiennent, si vous utilisez l'exemple suivant.

Pour utiliser cet exemple

  1. Créez une application console C#.

  2. Ajoutez des références aux assemblys suivants :

  3. Remplacez le contenu de Program.cs par le code situé plus loin dans cette rubrique.

  4. Dans ce code, remplacez Server, Port et VDir dans l'URL qui permet de construire l'objet TfsConfigurationServer pour que l'URL fasse référence à votre serveur.

    Conseil

    Pour être sûr d'utiliser l'URL appropriée, utilisez Team Explorer pour ouvrir un projet d'équipe sur votre serveur, puis vérifiez les propriétés de l'URL du serveur.

    Propriétés de Team Foundation Server : URL

    using System;
    using System.Collections.ObjectModel;
    using Microsoft.TeamFoundation.Client; 
    using Microsoft.TeamFoundation.Framework.Common;
    using Microsoft.TeamFoundation.Framework.Client;
    
    namespace TfsApplication
    {
        class Program
        {
            static void Main(String[] args)
            {
                // Connect to Team Foundation Server
                //     Server is the name of the server that is running the application tier for Team Foundation.
                //     Port is the port that Team Foundation uses. The default port is 8080.
                //     VDir is the virtual path to the Team Foundation application. The default path is tfs.
                Uri tfsUri = (args.Length < 1) ? 
                    new Uri("http://Server:Port/VDir") : new Uri(args[0]);
    
                TfsConfigurationServer configurationServer =
                    TfsConfigurationServerFactory.GetConfigurationServer(tfsUri);
    
                // Get the catalog of team project collections
                ReadOnlyCollection<CatalogNode> collectionNodes = configurationServer.CatalogNode.QueryChildren(
                    new[] { CatalogResourceTypes.ProjectCollection },
                    false, CatalogQueryOptions.None);
    
                // List the team project collections
                foreach (CatalogNode collectionNode in collectionNodes)
                {
                    // Use the InstanceId property to get the team project collection
                    Guid collectionId = new Guid(collectionNode.Resource.Properties["InstanceId"]);
                    TfsTeamProjectCollection teamProjectCollection = configurationServer.GetTeamProjectCollection(collectionId);
    
                    // Print the name of the team project collection
                    Console.WriteLine("Collection: " + teamProjectCollection.Name);
    
                    // Get a catalog of team projects for the collection
                    ReadOnlyCollection<CatalogNode> projectNodes = collectionNode.QueryChildren(
                        new[] { CatalogResourceTypes.TeamProject },
                        false, CatalogQueryOptions.None);
    
                    // List the team projects in the collection
                    foreach (CatalogNode projectNode in projectNodes)
                    {
                        Console.WriteLine(" Team Project: " + projectNode.Resource.DisplayName);
                    }
                }
            }
        }
    }
    
    Imports System
    Imports System.Collections.ObjectModel
    Imports Microsoft.TeamFoundation.Client
    Imports Microsoft.TeamFoundation.Framework.Common
    Imports Microsoft.TeamFoundation.Framework.Client
    
    Module Module1
    
        Sub Main(ByVal sArgs() As String)
    
            ' Connect to the Team Foundation Server
            ' Server is the name of the server running the application tier for Team Foundation Server
            ' Port is the port that the Team Foundation Server uses. The default port is 8080.
            ' VDir is the virtual path to the Team Foundation application. The default value is tfs.
            Dim tfsUri As Uri
            If sArgs.Length = 0 Then
                tfsUri = New Uri("https://Server:8080/tfs")
            Else
                tfsUri = New Uri(sArgs(1))
            End If
    
            Dim configurationServer As New TfsConfigurationServer(tfsUri)
            configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri)
    
            ' Get the catalog of team project collections
            Dim collectionNodes As ReadOnlyCollection(Of CatalogNode)
            Dim gVar As Guid() = New Guid() {CatalogResourceTypes.ProjectCollection}
            collectionNodes = configurationServer.CatalogNode.QueryChildren(gVar, False, CatalogQueryOptions.None)
    
            ' List the team project collections
            For Each collectionNode In collectionNodes
                Dim collectionId As Guid = New Guid(collectionNode.Resource.Properties("InstanceID"))
    
                Dim teamProjectCollection As New TfsTeamProjectCollection(tfsUri)
                teamProjectCollection = configurationServer.GetTeamProjectCollection(collectionId)
                System.Console.WriteLine("Collection:" + teamProjectCollection.Name)
    
                ' Get a catalog of team projects for the collection
                Dim hVar As Guid() = New Guid() {CatalogResourceTypes.TeamProject}
    
                Dim projectNodes As ReadOnlyCollection(Of CatalogNode)
                projectNodes = collectionNode.QueryChildren(hVar, False, CatalogQueryOptions.None)
    
                ' List the team projects in the collection
                For Each projectNode In projectNodes
                    System.Console.WriteLine(" Team Project: " + projectNode.Resource.DisplayName)
                Next
    
            Next
    
    
        End Sub
    
    End Module
    

Obtention de services Team Foundation Service supplémentaires

Vous pouvez accéder à des services supplémentaires à l'aide de l'une des méthodes GetService définies par la classe abstraite TfsConnection et implémentées par TfsConfigurationServer et TfsTeamProjectCollection.

Quand vous utilisez la classe TfsConfigurationServer, vous accédez aux services de l'ensemble du serveur. Quand vous utilisez la classe TfsTeamProjectCollection, vous accédez aux services de la collection de projets d'équipe. Par exemple, le service ITeamFoundationRegistry de TfsConfigurationServer fournit les propriétés inscrites du serveur. Le même service acquis à partir de TfsTeamProjectCollection fournit les propriétés inscrites d'une collection de projets d'équipe. Certains services s'appliquent uniquement aux collections de projets d'équipe.

Service

TfsConfigurationServer

(niveau serveur)

TfsTeamProjectCollection

(niveau collection)

ITeamFoundationRegistry

coche

coche

IIdentityManagementService

coche

coche

ITeamFoundationJobService

coche

coche

IPropertyService

coche

coche

IEventService

coche

coche

ISecurityService

coche

coche

ILocationService

coche

coche

TswaClientHyperlinkService

coche

coche

ITeamProjectCollectionService

coche

IAdministrationService

coche

coche

ICatalogService

coche

VersionControlServer

coche

WorkItemStore

coche

IBuildServer

coche

ITestManagementService

coche

ILinking

coche

ICommonStructureService3

coche

IServerStatusService

coche

IProcessTemplates

coche

Action au nom d'un autre utilisateur (emprunt d'identité)

Quand vous vous connectez à Team Foundation Server, vous pouvez utiliser une méthode qui prend en charge l'emprunt d'identité pour agir au nom d'une autre identité que celle qui exécute votre application. Toutes les opérations effectuées à partir de cette connexion le sont au nom de l'identité empruntée. Par exemple, votre application peut s'exécuter sous l'identité de l'utilisateur A mais créer une connexion à Team Foundation Server qui emprunte l'identité de l'utilisateur B. Si l'utilisateur A archive une modification apportée au code source dans ces conditions, l'ensemble de modifications enregistre que l'utilisateur B a archivé la modification.

Utilisation d'une identité Team Foundation

Vous pouvez utiliser un objet IdentityDescriptor quand vous vous connectez à Team Foundation Server pour spécifier l'identité à emprunter. IdentityDescriptor spécifie une identité définie par Team Foundation. Quand vous utilisez cette stratégie, vous n'avez pas besoin de spécifier de mot de passe. L'identité authentifiée doit disposer de l'autorisation Faire des demandes pour le compte de tiers, sauf si l'identité authentifiée (utilisateur A) et l'identité empruntée (utilisateur B) sont les mêmes.

Niveau serveur

Niveau collection

Utilisation d'informations d'identification authentifiées

Vous pouvez utiliser un objet ICredentials quand vous vous connectez à Team Foundation Server pour spécifier l'identité à emprunter. Cette stratégie ne demande pas d'autorisations spéciales. Toutefois, vous devez obtenir le mot de passe de l'identité pour créer l'objet ICredentials.

Vous pouvez également spécifier une implémentation de ICredentialsProvider quand vous vous connectez à Team Foundation Server pour gérer les demandes de nouvelles informations d'identification. Le système appelle l'implémentation de ICredentialsProvider que vous spécifiez pour demander de nouvelles informations d'identification quand les informations d'identification spécifiées par l'objet ICredentials ne sont pas authentifiées avec succès ou autorisées à effectuer l'opération.

Pour demander à l'utilisateur des informations d'identification, vous pouvez utiliser la classe UICredentialsProvider, qui implémente ICredentialsProvider en affichant une boîte de dialogue de connexion qui demande à l'utilisateur de nouvelles informations d'identification.

Niveau serveur

Niveau collection

Utilisation d'une combinaison de techniques

Vous pouvez utiliser à la fois une identité Team Foundation et des informations d'identification authentifiées quand vous vous connectez à Team Foundation Server. Par exemple, votre application peut s'exécuter à l'aide des informations d'identification de l'utilisateur A, mais vous pouvez utiliser les informations d'identification de l'utilisateur B et spécifier IdentityDescriptor pour l'utilisateur C quand vous vous connectez à Team Foundation Server. Dans ce cas, les demandes qui sont effectuées à l'aide de cette connexion sont authentifiées comme étant celles de l'utilisateur B mais effectuées au nom de l'utilisateur C. Pour que cette stratégie réussisse, l'utilisateur B doit disposer de l'autorisation Faire des demandes pour le compte de tiers.

Niveau serveur

Niveau collection

Ressources supplémentaires

gérer les collections de projets d'équipe.

Se connecter aux projets d'équipe dans Team Foundation Server

Présentation des classes TfsConnection, TfsConfigurationServer et TfsTeamProjectCollection sur le site web Microsoft

Utilisation de l'emprunt d'identité TFS avec les API de contrôle de version sur le site web Microsoft.