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
Créez une application console C#.
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.
Remplacez le contenu de Program.cs par le code qui apparaît plus loin dans cette rubrique.
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.
Conseil 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.
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) |
---|---|---|
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.
À 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 |
---|
|
Niveau |
---|
|
À 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 |
---|
|
À 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 |
---|
|
Niveau |
---|
|
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.