Partager via


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

Vous pouvez par programme se connecter à un serveur qui exécute Team Foundation et ensuite accéder aux projets d'équipe sur ce serveur si vous utilisez l'exemple suivant.Si vous modifiez l'exemple, vous pouvez utiliser les services que Getting Additional Team Foundation Services décrit ultérieurement dans cette rubrique.Vous pouvez également agir de la part des autres à l'aide de l'emprunt d'identité, comme Acting on Behalf of Another User (Impersonation) décrit ultérieurement 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 :

    [!REMARQUE]

    Si Microsoft.TeamFoundation.Client et Microsoft.TeamFoundation.Common n'apparaissent pas sur l'onglet .NET de la boîte de dialogue Références , utilisez l'onglet Parcourir pour ajouter les assemblys.Vous pouvez les rechercher dans %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0.

  3. Remplacez le contenu de Program.cs par le code qui apparaît plus loin dans cette rubrique.

  4. Dans ce code, remplacez serveur, port, et VDir dans l'URL qui est utilisé pour construire l'objet de TfsConfigurationServer afin que l'URL fait référence à votre serveur.

    ConseilConseil

    Pour vous assurer que vous utilisez l'URL correcte, utilisez Team Explorer pour ouvrir un projet d'équipe sur votre serveur, et vérifiez les propriétés d'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 des services supplémentaires de Team Foundation

Vous pouvez accéder à des services supplémentaires en utilisant l'une des méthodes de GetService que la classe abstraite TfsConnection définit et qu' TfsConfigurationServer et TfsTeamProjectCollection appliquent.

Lorsque vous utilisez la classe d' TfsConfigurationServer , vous accédez aux services du serveur entier.Lorsque vous utilisez la classe d' TfsTeamProjectCollection , vous accédez aux services de la collection de projets d'équipe.Par exemple, le service d' ITeamFoundationRegistry pour TfsConfigurationServer fournit des propriétés stockées du serveur.Le même service qui est entré d' TfsTeamProjectCollection fournit des propriétés lors d'une collection de projets d'équipe.Certains services s'appliquent aux collections de projets d'équipe uniquement.

Service

TfsConfigurationServer

(au niveau de le serveur)

TfsTeamProjectCollection

(niveau)

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

Agir de la part d'un autre utilisateur (emprunt d'identité)

Lorsque vous vous connectez à Team Foundation Server, vous pouvez utiliser une méthode qui prend l'emprunt d'identité pour agir de la part d'une identité différente de celle qui exécute votre application.Toutes les opérations exécutées sur cette connexion sont exécutées 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'utilisateur B.Si l'utilisateur A archive une modification au code source dans ces conditions, l'ensemble de modifications s'inscrit que l'utilisateur B a archivé la modification.

Bb286958.collapse_all(fr-fr,VS.110).gifÀ l'aide d'une identité de Team Foundation

Vous pouvez utiliser un objet d' IdentityDescriptor lorsque vous vous connectez à Team Foundation Server pour spécifier l'identité pour emprunter.IdentityDescriptor spécifie une identité qu' Team Foundation définit.Lorsque vous utilisez cette stratégie, vous n'avez pas besoin de spécifier un mot de passe.L'identité authentifiée doit avoir l'autorisation Effectuez les requêtes de la part d'un autre utilisateur , sauf lorsqu' authentifié (Un utilisateur) et emprunté (les identités d'utilisateur B) sont identiques.

Au niveau serveur

  • TfsConfigurationServer.TfsConfigurationServer(RegisteredConfigurationServer, IdentityDescriptor)

  • TfsConfigurationServer.TfsConfigurationServer(Uri, IdentityDescriptor)

Niveau

  • TfsTeamProjectCollection.TfsTeamProjectCollection(RegisteredProjectCollection, IdentityDescriptor)

  • TfsTeamProjectCollection.TfsTeamProjectCollection(Uri, IdentityDescriptor)

Bb286958.collapse_all(fr-fr,VS.110).gifÀ l'aide de les informations d'identification authentifiées

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

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

Pour inviter l'utilisateur à entrer les informations d'identification, vous pouvez utiliser la classe d' UICredentialsProvider , qui implémente ICredentialsProvider en affichant une boîte de dialogue d'ouverture de session pour inviter l'utilisateur à les nouvelles informations d'identification.

Au niveau serveur

Niveau

Bb286958.collapse_all(fr-fr,VS.110).gifÀ l'aide d'une combinaison des techniques

Vous pouvez utiliser une identité d' Team Foundation et les informations d'identification authentifiées lorsque vous vous connectez à Team Foundation Server.Par exemple, votre application peut s'exécuter sous les 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 lorsque vous vous connectez à Team Foundation Server.Dans ce cas, les demandes effectuées à l'aide de cette connexion sont authentifiées comme utilisateur B et exécutées pour le compte de l'utilisateur C.Pour que cette stratégie réussisse, l'utilisateur B doit avoir l'autorisation Effectuez les requêtes de la part d'un autre utilisateur .

Au niveau serveur

  • TfsConfigurationServer.TfsConfigurationServer(RegisteredConfigurationServer, ICredentials, ICredentialsProvider, IdentityDescriptor)

  • TfsConfigurationServer.TfsConfigurationServer(Uri, ICredentials, ICredentialsProvider, IdentityDescriptor)

Niveau

  • TfsTeamProjectCollection.TfsTeamProjectCollection(RegisteredProjectCollection, ICredentials, ICredentialsProvider, IdentityDescriptor)

  • TfsTeamProjectCollection.TfsTeamProjectCollection(Uri, ICredentials, ICredentialsProvider, IdentityDescriptor)

Ressources supplémentaires

Organisation de votre serveur avec des collections de projets d'équipe

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

Tapez le TfsConnection, le TfsConfigurationServer, et les classes de TfsTeamProjectCollection sur le site Web Microsoft

À l'aide de l'emprunt d'identité de TFS avec les API de contrôle de version sur le site Web Microsoft.