Condividi tramite


Connettersi a Team Foundation Server da un'applicazione console

A livello di codice è possibile connettersi a un server che esegue Team Foundation quindi accedere ai progetti team in tale server se si utilizza il seguente esempio.Se si modifica l'esempio, è possibile utilizzare i servizi che Getting Additional Team Foundation Services descritto in più avanti in questo argomento.È inoltre possibile agire per conto di altri utilizza la rappresentazione, come Acting on Behalf of Another User (Impersonation) descritto in più avanti in questo argomento.

In questo argomento

Esempio

È possibile elencare gli insiemi di progetti team e i progetti team contenenti se si utilizza il seguente esempio.

Per utilizzare questo esempio

  1. Creare un'applicazione console C#.

  2. Aggiungere riferimenti agli assembly riportati di seguito:

    [!NOTA]

    Se Microsoft.TeamFoundation.Client e Microsoft.TeamFoundation.Common non vengono visualizzati nella scheda .NET la finestra di dialogo Riferimenti, utilizzare la scheda Sfoglia per aggiungere assembly.È possibile trovarli su %programmi% \ Microsoft Visual Studio 10,0 \ Common7 \ IDE \ ReferenceAssemblies \ v2.0.

  3. Sostituire il contenuto Program.cs con il codice disponibile più avanti in questo argomento.

  4. In tali codice, serverdi sostituzione, portae VDir nell'URL utilizzato per costruire l'oggetto di TfsConfigurationServer in modo che l'url faccia riferimento al server.

    SuggerimentoSuggerimento

    Per accertarsi di utilizzare l'url corretto, utilizzare Team Explorer per aprire un progetto team nel server e verificare le proprietà URL del server.

    Proprietà di 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
    
    

Ottenere i servizi aggiuntivi di Team Foundation

È possibile accedere ai servizi aggiuntivi utilizzando uno dei metodi GetService che la classe astratta TfsConnection definisce e che TfsConfigurationServer e TfsTeamProjectCollection implementano.

Quando si utilizza la classe TfsConfigurationServer, è possibile accedere ai servizi per l'intero server.Quando si utilizza la classe TfsTeamProjectCollection, è possibile accedere ai servizi per la raccolta di progetti team.Ad esempio, il servizio ITeamFoundationRegistry per TfsConfigurationServer fornisce proprietà registrate del server.Lo stesso servizio che viene acquisito da TfsTeamProjectCollection fornisce proprietà registrate di una raccolta di progetti team.Alcuni servizi vengono applicate alle raccolte di progetti team solo.

Servizio

TfsConfigurationServer

(a livello di server)

TfsTeamProjectCollection

(a livello di raccolta)

ITeamFoundationRegistry

segno di spunta

segno di spunta

IIdentityManagementService

segno di spunta

segno di spunta

ITeamFoundationJobService

segno di spunta

segno di spunta

IPropertyService

segno di spunta

segno di spunta

IEventService

segno di spunta

segno di spunta

ISecurityService

segno di spunta

segno di spunta

ILocationService

segno di spunta

segno di spunta

TswaClientHyperlinkService

segno di spunta

segno di spunta

ITeamProjectCollectionService

segno di spunta

IAdministrationService

segno di spunta

segno di spunta

ICatalogService

segno di spunta

VersionControlServer

segno di spunta

WorkItemStore

segno di spunta

IBuildServer

segno di spunta

ITestManagementService

segno di spunta

ILinking

segno di spunta

ICommonStructureService3

segno di spunta

IServerStatusService

segno di spunta

IProcessTemplates

segno di spunta

Oltre a nome di un altro utente (rappresentazione)

Quando ci si connette a Team Foundation Server, è possibile utilizzare un metodo tale rappresentazione supportate per agire per conto di un'identità diversa da quella che esegue l'applicazione.Tutte le operazioni eseguite in base alla connessione verrà eseguito per conto dell'identità rappresentata.Ad esempio, l'applicazione può funzionare con l'identità dell'utente A ma creare una connessione a Team Foundation Server che rappresenta l'utente B.Se l'utente A verifica una modifica al codice sorgente in queste condizioni, l'insieme di modifiche registrato dall'utente B stata completata la modifica.

Bb286958.collapse_all(it-it,VS.110).gifUtilizzo di un'identità di Team Foundation

È possibile utilizzare un oggetto IdentityDescriptor quando ci si connette a Team Foundation Server per specificare l'identità per rappresentare.IdentityDescriptor specifica un'identità con Team Foundation definisce.Quando si utilizza questa strategia, non è necessario specificare una password.L'identità autenticata è necessaria l'autorizzazione Effettua richieste per conto di un altro utente, salvo quando l'utente autenticato (Oggetto) e (l'identità rappresentata dell'utente B) sono uguali.

a livello di server

  • TfsConfigurationServer.TfsConfigurationServer(RegisteredConfigurationServer, IdentityDescriptor)

  • TfsConfigurationServer.TfsConfigurationServer(Uri, IdentityDescriptor)

a livello di raccolta

  • TfsTeamProjectCollection.TfsTeamProjectCollection(RegisteredProjectCollection, IdentityDescriptor)

  • TfsTeamProjectCollection.TfsTeamProjectCollection(Uri, IdentityDescriptor)

Bb286958.collapse_all(it-it,VS.110).gifMediante le credenziali autenticate

È possibile utilizzare un oggetto ICredentials quando ci si connette a Team Foundation Server per specificare l'identità per rappresentare.Questa strategia non richiede autorizzazioni speciali, ma è possibile ottenere la password dell'identità per creare l'oggetto ICredentials.

È inoltre possibile specificare un'implementazione ICredentialsProvider quando ci si connette a Team Foundation Server per gestire le richieste per le nuove credenziali.Le chiamate di sistema l'implementazione ICredentialsProvider specificato per richiedere le nuove credenziali quando le credenziali specificate dall'oggetto ICredentials correttamente non vengono autenticate o non autorizzati a eseguire l'operazione.

Per richiedere all'utente le credenziali, è possibile utilizzare la classe UICredentialsProvider, che implementa ICredentialsProvider visualizzare una finestra di dialogo di accesso per richiedere all'utente per le nuove credenziali.

a livello di server

a livello di raccolta

Bb286958.collapse_all(it-it,VS.110).gifUtilizzando una combinazione di tecniche

È possibile utilizzare sia un'identità Team Foundation che le credenziali autenticate quando ci si connette a Team Foundation Server.Ad esempio, l'applicazione potrebbe venire eseguita con credenziali per l'utente A, ma può utilizzare le credenziali dell'utente B e specificare IdentityDescriptor per l'utente C per la connessione a Team Foundation Server.In questo caso, le richieste effettuate tramite tale connessione vengono autenticate come utente B ma vengono eseguite per conto dell'utente C.Affinché questa strategia riesca, l'utente B è necessaria l'autorizzazione Effettua richieste per conto di un altro utente.

a livello di server

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

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

a livello di raccolta

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

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

Risorse supplementari

Organizzazione del server con raccolte di progetti team

Connettersi ai progetti team in Team Foundation Server

Introduzione al TfsConnection, il TfsConfigurationServer e le classi di TfsTeamProjectCollection nel sito Web Microsoft

Mediante la rappresentazione TFS al controllo della versione API nel sito Web Microsoft.