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
Creare un'applicazione console C#.
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.
Sostituire il contenuto Program.cs con il codice disponibile più avanti in questo argomento.
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.
Suggerimento Per accertarsi di utilizzare l'url corretto, utilizzare Team Explorer per aprire un progetto team nel server e verificare le proprietà URL del server.
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) |
---|---|---|
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.
Utilizzo 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 |
---|
|
a livello di raccolta |
---|
|
Mediante 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 |
---|
|
Utilizzando 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 |
---|
|
a livello di raccolta |
---|
|
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.