Freigeben über


Herstellen einer Verbindung mit Team Foundation Server von einer Konsolenanwendung aus

Sie können an einen Server programmgesteuert herstellen, der Team Foundation und auf die Teamprojekte dann auf diesem Server zuzugreifen ausführt, wenn Sie das folgende Beispiel verwenden.Wenn Sie das Beispiel ändern, können Sie die Dienste verwenden, die Getting Additional Team Foundation Services weiter unten in diesem Thema beschrieben werden.Sie können im Namen anderer nach der Verwendung des Identitätswechsels auch verfahren, da Acting on Behalf of Another User (Impersonation) weiter unten in diesem Thema beschrieben werden.

In diesem Thema

Beispiel

Sie können die Teamprojektsammlungen und die Teamprojekte auflisten, die sie enthalten, wenn Sie das folgende Beispiel verwenden.

So verwenden Sie dieses Beispiel

  1. Erstellen Sie eine C#-Konsolenanwendung.

  2. Fügen Sie Verweise auf die folgenden Assemblys hinzu:

    HinweisHinweis

    Wenn Microsoft.TeamFoundation.Client und Microsoft.TeamFoundation.Common nicht auf der Registerkarte des Dialogfelds .NETVerweise angezeigt werden, verwenden Sie die Registerkarte Durchsuchen, um die Assemblys hinzuzufügen.Sie können sie unter %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0 finden.

  3. Ersetzen Sie den Inhalt von Program.cs durch den Code, der später in diesem Thema angezeigt wird.

  4. In diesem Code ersetzen Sie Server, Port und VDir im URL, das verwendet wird, um das TfsConfigurationServer-Objekt erstellen, sodass die URL den Server verweist.

    TippTipp

    Um sicherzustellen dass Sie die richtige URL verwenden, verwenden Sie Team Explorer um ein Teamprojekt auf dem Server zu öffnen, und überprüfen Sie die URL-Eigenschaften des Servers.

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

Abrufen von zusätzlichen Team Foundation-Dienstleistungen

Sie können auf zusätzliche Dienste zugreifen, indem Sie eine der GetService-Methoden verwenden, die die abstrakte Klasse TfsConnection definiert und die TfsConfigurationServer und TfsTeamProjectCollection implementieren.

Wenn Sie die TfsConfigurationServer-Klasse verwenden, greifen Sie auf die Dienste für den gesamten Server.Wenn Sie die TfsTeamProjectCollection-Klasse verwenden, greifen Sie auf die Dienste für die Teamprojektsammlung auf.Zum Beispiel stellt der ITeamFoundationRegistry Dienst für registrierte TfsConfigurationServer-Eigenschaften des Servers bereit.Der gleiche Dienst, der von TfsTeamProjectCollection abgerufen wird, stellt die registrierten Eigenschaften einer Teamprojektsammlung bereit.Einige Dienste gelten nur für Teamprojektsammlungen zu.

Dienst

TfsConfigurationServer

(Serverebene)

TfsTeamProjectCollection

(Sammlungsebene)

ITeamFoundationRegistry

Häkchen

Häkchen

IIdentityManagementService

Häkchen

Häkchen

ITeamFoundationJobService

Häkchen

Häkchen

IPropertyService

Häkchen

Häkchen

IEventService

Häkchen

Häkchen

ISecurityService

Häkchen

Häkchen

ILocationService

Häkchen

Häkchen

TswaClientHyperlinkService

Häkchen

Häkchen

ITeamProjectCollectionService

Häkchen

IAdministrationService

Häkchen

Häkchen

ICatalogService

Häkchen

VersionControlServer

Häkchen

WorkItemStore

Häkchen

IBuildServer

Häkchen

ITestManagementService

Häkchen

ILinking

Häkchen

ICommonStructureService3

Häkchen

IServerStatusService

Häkchen

IProcessTemplates

Häkchen

Fungieren im Namen eines anderen Benutzers (Identitätswechsel)

Wenn Sie an Team Foundation Server herstellen, können Sie eine Methode, die den Identitätswechsel unterstützt, um im Namen einer Identität als die handeln, die die Anwendung ausführt.Alle Vorgänge, die auf diesen Verbindung ausgeführt werden, werden im Namen der imitierten Identität ausgeführt.Beispielsweise könnte die Anwendung unter der Identität des Benutzer A ausgeführt werden jedoch eine Verbindung zu Team Foundation Server erstellen, die Benutzer B imitiert.Wenn Benutzer A in eine Änderung am Quellcode unter diesen Bedingungen überprüft, zeichnet das Changeset auf, dass Benutzer B in die Änderung eingecheckt hat.

Bb286958.collapse_all(de-de,VS.110).gifVerwenden einer Team Foundation-Identität

Sie können ein IdentityDescriptor-Objekt verwenden, wenn Sie an Team Foundation Server herstellen, um die Identität anzugeben, um imitieren.IdentityDescriptor gibt eine Identität an, die Team Foundation definiert.Bei dieser Strategie, müssen Sie nicht, um ein Kennwort angeben.Die authentifizierte Identität muss die Anforderungen im Auftrag von anderen Benutzern einreichen Berechtigung, außer wenn Benutzer authentifiziert (A) und Identität angenommen Benutzersind (B) Identitäten identisch.

Serverebene

  • TfsConfigurationServer.TfsConfigurationServer(RegisteredConfigurationServer, IdentityDescriptor)

  • TfsConfigurationServer.TfsConfigurationServer(Uri, IdentityDescriptor)

Auf Auflistungsebene

  • TfsTeamProjectCollection.TfsTeamProjectCollection(RegisteredProjectCollection, IdentityDescriptor)

  • TfsTeamProjectCollection.TfsTeamProjectCollection(Uri, IdentityDescriptor)

Bb286958.collapse_all(de-de,VS.110).gifVerwenden von authentifizierten Anmeldeinformationen

Sie können ein ICredentials-Objekt verwenden, wenn Sie an Team Foundation Server herstellen, um die Identität anzugeben, um imitieren.Diese Strategie erfordert keine spezielle Berechtigungen, aber Sie müssen in der Lage sein, um das Kennwort der Identität, um das ICredentials-Objekt zu erstellen.

Sie können eine Implementierung von ICredentialsProvider auch angeben, wenn Sie an Team Foundation Server an Handleersuchen um neue Anmeldeinformationen herstellen.Das System ruft die Implementierung von ICredentialsProvider auf, um der Sie angeben, um neue Anmeldeinformationen angefordert, wenn die Anmeldeinformationen, die vom ICredentials-Objekt angegeben werden, nicht erfolgreich authentifiziert oder festgelegt werden, um den Vorgang auszuführen.

Um den Benutzer zur Eingabe der Anmeldeinformationen aufzufordern, können Sie die UICredentialsProvider-Klasse verwenden, die ICredentialsProvider implementiert mithilfe eines Anmeldedialogfeld angezeigt um den Benutzer für neue Anmeldeinformationen einzugeben.

Serverebene

Auf Auflistungsebene

Bb286958.collapse_all(de-de,VS.110).gifVerwenden einer Kombination von Techniken

Sie können eine Team Foundation authentifizierte Identität und Anmeldeinformationen verwenden, wenn Sie an Team Foundation Server herstellen.Beispielsweise kann die Anwendung mit Anmeldeinformationen für Benutzer A ausgeführt, aber Sie Anmeldeinformationen für Benutzer B verwenden und könnten IdentityDescriptor für Benutzer C an, wenn Sie an Team Foundation Server herstellen.In diesem Fall werden Anforderungen, die ausgeführt werden, indem diese Verbindung verwendet, authentifiziert, als Benutzer B jedoch ausgeführt im Namen des Benutzers C.Damit diese Strategie folgt, muss Benutzer B die Anforderungen im Auftrag von anderen Benutzern einreichen Berechtigung.

Serverebene

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

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

Auf Auflistungsebene

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

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

Zusätzliche Ressourcen

Organisieren des Servers mit Teamprojektsammlungen

Herstellen einer Verbindung mit Teamprojekten in Team Foundation Server

Einführung zu TfsConnection, des TfsConfigurationServer und der TfsTeamProjectCollections-Klassen auf der Microsoft-Website

Verwenden TFS-Identitätswechsels mit Versionskontrolle API auf der Microsoft-Website.