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
Erstellen Sie eine C#-Konsolenanwendung.
Fügen Sie Verweise auf die folgenden Assemblys hinzu:
Hinweis 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.
Ersetzen Sie den Inhalt von Program.cs durch den Code, der später in diesem Thema angezeigt wird.
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.
Tipp 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.
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) |
---|---|---|
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.
Verwenden 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 |
---|
|
Auf Auflistungsebene |
---|
|
Verwenden 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 |
---|
|
Verwenden 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 |
---|
|
Auf Auflistungsebene |
---|
|
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.