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
Créez une application console C#.
Ajoutez des références aux assemblys suivants :
Remplacez le contenu de Program.cs par le code situé plus loin dans cette rubrique.
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.
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) |
---|---|---|
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.