Conectando ao Team Foundation Server de um aplicativo de console

Você pode programaticamente se conectar a um servidor que esteja executando Team Foundation e para acessar os projetos de equipe em esse servidor se você usar o seguinte exemplo.Se você alterar o exemplo, você pode usar os serviços que Getting Additional Team Foundation Services descreve posteriormente em este tópico.Você também pode atuar em nome de outro usando representação, porque Acting on Behalf of Another User (Impersonation) descreve posteriormente em este tópico.

Neste tópico

Exemplo

Você pode listar as coleções de projeto de equipe e a equipe projetos que contenham se você usar o seguinte exemplo.

Para usar este exemplo

  1. Crie um aplicativo de console C#.

  2. Adicione referências para os seguintes conjuntos de módulos (assemblies) :

    ObservaçãoObservação

    Se Microsoft.TeamFoundation.Client e Microsoft.TeamFoundation.Common não aparecem na guia de .NET da caixa de diálogo de Referências , use a guia de Procurar para adicionar conjuntos.Você poderá encontrá-las em %ProgramFiles% \ Microsoft Visual Studio 10,0 \ Common7 \ IDE \ v2.0 \ ReferenceAssemblies.

  3. Substitua o conteúdo de Module.vb com o código que aparece em este tópico posteriormente.

  4. Em esse código, substitua Servidor, porta, e VDir na URL que é usado para construir o objeto de TfsConfigurationServer de modo que a URL consulte o servidor.

    DicaDica

    Para certificar-se que você está usando o URL correto, use Team Explorer para abrir um projeto de equipe em seu servidor, e verifique as propriedades do URL do servidor.

    Team Foundation Server propriedades: 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
    
    

Obtendo serviços adicionais do team foundation

Você pode acessar serviços adicionais usando um dos métodos de GetService que a classe abstrata TfsConnection define e que TfsConfigurationServer e TfsTeamProjectCollection implementam.

Quando você usa a classe de TfsConfigurationServer , você acessar os serviços para o servidor inteiro.Quando você usa a classe de TfsTeamProjectCollection , você acessar os serviços para a coleção de projeto de equipe.Por exemplo, o serviço de ITeamFoundationRegistry para TfsConfigurationServer fornece propriedades registradas do servidor.O mesmo serviço que é adquirido de TfsTeamProjectCollection fornece propriedades registradas de uma coleção de projeto de equipe.Alguns serviços se aplicam às coleções de projeto de equipe somente.

Serviço

TfsConfigurationServer

(o nível)

TfsTeamProjectCollection

(coleção nível)

ITeamFoundationRegistry

marca de seleção

marca de seleção

IIdentityManagementService

marca de seleção

marca de seleção

ITeamFoundationJobService

marca de seleção

marca de seleção

IPropertyService

marca de seleção

marca de seleção

IEventService

marca de seleção

marca de seleção

ISecurityService

marca de seleção

marca de seleção

ILocationService

marca de seleção

marca de seleção

TswaClientHyperlinkService

marca de seleção

marca de seleção

ITeamProjectCollectionService

marca de seleção

IAdministrationService

marca de seleção

marca de seleção

ICatalogService

marca de seleção

VersionControlServer

marca de seleção

WorkItemStore

marca de seleção

IBuildServer

marca de seleção

ITestManagementService

marca de seleção

ILinking

marca de seleção

ICommonStructureService3

marca de seleção

IServerStatusService

marca de seleção

IProcessTemplates

marca de seleção

Atuar em nome de outro usuário (representação)

Quando você se conecta a Team Foundation Server, você pode usar um método que ofereça suporte a representação para atuar em nome de uma identidade diferente de aquele que executa o aplicativo.Todas as operações que são executadas com base na conexão serão executadas em nome de identidade representada.Por exemplo, seu aplicativo pode executar sob a identidade do usuário A mas criar uma conexão a Team Foundation Server que representa o usuário B.Se o usuário A fazer o check-in uma alteração no código-fonte em essas condições, o conjunto de alterações gravará que o usuário B fazer o check-in da alteração.

Bb286958.collapse_all(pt-br,VS.110).gifUsando uma identidade do team foundation

Você pode usar um objeto de IdentityDescriptor quando você se conecta a Team Foundation Server para especificar a identidade para representar.IdentityDescriptor especifica uma identidade que Team Foundation define.Quando você usa essa estratégia, você não precisa especificar uma senha.A identidade autenticada deve ter a permissão de Fazer solicitações em nome de outro usuário , a não ser que quando Um usuário autenticado () e (representado identidades de usuário B) é o mesmo.

o nível

  • TfsConfigurationServer.TfsConfigurationServer(RegisteredConfigurationServer, IdentityDescriptor)

  • TfsConfigurationServer.TfsConfigurationServer(Uri, IdentityDescriptor)

Coleções nível

  • TfsTeamProjectCollection.TfsTeamProjectCollection(RegisteredProjectCollection, IdentityDescriptor)

  • TfsTeamProjectCollection.TfsTeamProjectCollection(Uri, IdentityDescriptor)

Bb286958.collapse_all(pt-br,VS.110).gifUsando credenciais autenticadas

Você pode usar um objeto de ICredentials quando você se conecta a Team Foundation Server para especificar a identidade para representar.Essa estratégia não requer permissões especiais, mas você deve poder obter a senha de identidade para criar o objeto de ICredentials .

Você também pode especificar uma implementação de ICredentialsProvider quando você se conecta a Team Foundation Server para manipular as solicitações para novos credenciais.O sistema chama a implementação de ICredentialsProvider que você especifica para solicitar novos credenciais quando as credenciais que são especificadas pelo objeto de ICredentials não são autenticados ou não estão autorizados com êxito executar a operação.

Para solicitar ao usuário para as credenciais, você pode usar a classe de UICredentialsProvider , que implementa ICredentialsProvider exibindo uma caixa de diálogo de login para solicitar ao usuário para novos credenciais.

o nível

Coleções nível

Bb286958.collapse_all(pt-br,VS.110).gifUsando uma combinação de técnicas

Você pode usar uma identidade de Team Foundation e credenciais autenticadas quando você se conecta a Team Foundation Server.Por exemplo, seu aplicativo pode executar em credenciais do usuário Para, mas você pode usar credenciais do usuário B e especificar IdentityDescriptor para o usuário C quando você se conecta a Team Foundation Server.Em esse caso, as solicitações que são feitas usando a conexão são autenticadas como o usuário B mas executadas em nome do usuário C.Para essa estratégia que foi bem-sucedida, o usuário B deve ter a permissão de Fazer solicitações em nome de outro usuário .

o nível

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

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

Coleções nível

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

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

Recursos adicionais

Organizando seu servidor com coleções de projeto de equipe

Conectar-se a projetos de equipe no Team Foundation Server

Introdução ao TfsConnection, o TfsConfigurationServer, e as classes de TfsTeamProjectCollection no site da Microsoft

Usando representação de TFS com APIs de controle de versão no site da Microsoft.