Share via


Conectar con el servidor Team Foundation Server desde una aplicación de consola

Mediante programación puede conectarse a un servidor que ejecute Team Foundation y después tener acceso a los proyectos de equipo en ese servidor si utiliza el ejemplo siguiente.Si modifica el ejemplo, puede utilizar los servicios que Getting Additional Team Foundation Services se describe más adelante en este tema.También puede representar en nombre de otros con suplantación, como Acting on Behalf of Another User (Impersonation) se describe más adelante en este tema.

En este tema

Ejemplo

Puede mostrar las colecciones de proyectos de equipo y los proyectos de equipo que contienen si utiliza el ejemplo siguiente.

Para utilizar este ejemplo

  1. Cree una aplicación de consola de C#.

  2. Agregue referencias a los siguientes ensamblados:

    [!NOTA]

    Si Microsoft.TeamFoundation.Client y Microsoft.TeamFoundation.Common no aparecen en la pestaña de .NET del cuadro de diálogo de Referencias , utilice la pestaña de Examinar para agregar ensamblados.Puede encontrarlos en %ProgramFiles% \ Microsoft Visual Studio 10,0 \ Common7 \ IDE \ ReferenceAssemblies \ v2.0.

  3. Reemplace el contenido Program.cs con el código que aparece más adelante en este tema.

  4. En el código, reemplace Servidor, Puerto, y VDir en la dirección URL que se utiliza para crear el objeto de TfsConfigurationServer de modo que la dirección URL hace referencia al servidor.

    SugerenciaSugerencia

    Para asegurarse de que está utilizando la dirección URL correcta, utilice Team Explorer para abrir un proyecto de equipo en el servidor y, compruebe las propiedades URL del servidor.

    Propiedades del servidor 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
    
    

Obtención de Team Foundation Services adicional

Puede tener acceso a servicios adicionales mediante uno de los métodos GetService que la clase abstracta TfsConnection define y que implementan TfsConfigurationServer y TfsTeamProjectCollection .

Cuando utiliza la clase de TfsConfigurationServer , tiene acceso a los servicios del servidor entero.Cuando utiliza la clase de TfsTeamProjectCollection , tiene acceso a los servicios para la colección de proyectos de equipo.Por ejemplo, el servicio de ITeamFoundationRegistry para TfsConfigurationServer proporciona propiedades registradas de servidor.El mismo servicio que se adquiere de TfsTeamProjectCollection proporciona propiedades registradas de una colección de proyectos de equipo.Algunos servicios se aplican a las colecciones de proyectos de equipo solamente.

Servicio

TfsConfigurationServer

(Servidor-nivel)

TfsTeamProjectCollection

(colección-nivel)

ITeamFoundationRegistry

marca de verificación

marca de verificación

IIdentityManagementService

marca de verificación

marca de verificación

ITeamFoundationJobService

marca de verificación

marca de verificación

IPropertyService

marca de verificación

marca de verificación

IEventService

marca de verificación

marca de verificación

ISecurityService

marca de verificación

marca de verificación

ILocationService

marca de verificación

marca de verificación

TswaClientHyperlinkService

marca de verificación

marca de verificación

ITeamProjectCollectionService

marca de verificación

IAdministrationService

marca de verificación

marca de verificación

ICatalogService

marca de verificación

VersionControlServer

marca de verificación

WorkItemStore

marca de verificación

IBuildServer

marca de verificación

ITestManagementService

marca de verificación

ILinking

marca de verificación

ICommonStructureService3

marca de verificación

IServerStatusService

marca de verificación

IProcessTemplates

marca de verificación

Actuar en nombre de otro usuario (suplantación)

Cuando se conecta a Team Foundation Server, puede utilizar un método que admita a la suplantación que actúan en nombre de una identidad distinta de la que se ejecuta la aplicación.Cualquier operación se realice basándose en esa conexión se realiza en nombre de la identidad suplantada.Por ejemplo, la aplicación podría ejecutarse con la identidad del usuario A pero crear una conexión a Team Foundation Server que suplanta b del usuario.Si los que el usuario A un cambio en el código fuente en estas condiciones, el conjunto de cambios registrados que b de usuario protegió el cambio.

Bb286958.collapse_all(es-es,VS.110).gifMediante Team Foundation Identity

Puede utilizar un objeto de IdentityDescriptor cuando se conecta a Team Foundation Server para especificar la identidad para suplantar.IdentityDescriptor especifica una identidad que Team Foundation defina.Con esta estrategia, no es necesario especificar una contraseña.La identidad autenticada debe tener el permiso de haga las solicitudes en nombre de otro usuario , excepto cuando autenticado (el usuario A) y suplantado (las identidades de usuario B) es igual.

Servidor-nivel

  • TfsConfigurationServer.TfsConfigurationServer(RegisteredConfigurationServer, IdentityDescriptor)

  • TfsConfigurationServer.TfsConfigurationServer(Uri, IdentityDescriptor)

Colección-nivel

  • TfsTeamProjectCollection.TfsTeamProjectCollection(RegisteredProjectCollection, IdentityDescriptor)

  • TfsTeamProjectCollection.TfsTeamProjectCollection(Uri, IdentityDescriptor)

Bb286958.collapse_all(es-es,VS.110).gifMediante las credenciales autenticadas

Puede utilizar un objeto de ICredentials cuando se conecta a Team Foundation Server para especificar la identidad para suplantar.Esta estrategia no requiere permisos especiales, pero debe poder obtener la contraseña de la identidad para crear el objeto de ICredentials .

También puede especificar una implementación de ICredentialsProvider cuando se conecta a Team Foundation Server para controlar las solicitudes para las nuevas credenciales.El sistema la implementación de ICredentialsProvider que especifique para aplicar las nuevas credenciales cuando las credenciales especificadas por el objeto de ICredentials no se autentican ni se autoriza correctamente a realizar la operación.

Para solicitar al usuario las credenciales, puede utilizar la clase de UICredentialsProvider , que implementa ICredentialsProvider muestra un cuadro de diálogo de inicio de sesión para preguntar al usuario para las nuevas credenciales.

Servidor-nivel

Colección-nivel

Bb286958.collapse_all(es-es,VS.110).gifMediante una combinación de técnicas

Puede utilizar una identidad de Team Foundation y las credenciales autenticadas cuando se conecta a Team Foundation Server.Por ejemplo, la aplicación podría ejecutarse bajo las credenciales del usuario A, pero puede utilizar credenciales para b de usuario y especifique IdentityDescriptor para el usuario C al conectarse a Team Foundation Server.En este caso, las solicitudes que se realizan utilizando esa conexión se autentican como b de usuario pero se realizan en nombre de usuario C.Para que esta estrategia tiene éxito, b de usuario debe tener el permiso de haga las solicitudes en nombre de otro usuario .

Servidor-nivel

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

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

Colección-nivel

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

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

Recursos adicionales

Organizar el servidor con colecciones de proyectos de equipo

Conectarse a proyectos de equipo en Team Foundation Server

Introducción de TfsConnection, de TfsConfigurationServer, y las clases de TfsTeamProjectCollection en el sitio Web de Microsoft

Mediante la suplantación de TFS con control de versiones API en el sitio Web de Microsoft.