Połączyć się z aplikacji konsoli Team Foundation Server
Można programowo połączyć serwer, na którym działa Team Foundation i jeśli użyć następującego przykładu uzyskać dostęp projektów zespołu na tym serwerze.Zmodyfikowanie przykładzie, można korzystać z usług, Getting Additional Team Foundation Services opisano w dalszej części tego tematu.Może także działać w imieniu innych przy użyciu personifikacji, jako Acting on Behalf of Another User (Impersonation) opisano w dalszej części tego tematu.
W tym temacie
Przykład
Można wyświetlić listę zbiorów zespołu projektu i projektów zespołów, które zawierają, jeśli użyć następującego przykładu.
Aby wykorzystać ten przykład
Tworzy aplikację konsoli C#.
Dodaj odwołania do następujących zespołów:
[!UWAGA]
Jeśli Microsoft.TeamFoundation.Client i Microsoft.TeamFoundation.Common nie są wyświetlane na .NET karcie odniesienia okno dialogowe, użyj Przeglądaj kartę, aby dodać zgromadzeń.Można je znaleźć na także Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0.
Zastąp zawartość plik Program.cs kod, który w dalszej części tego tematu.
W tym kodzie Zamień Server, portu, i VDir adres URL używany do konstruowania obiektu TfsConfigurationServer, tak aby adres URL odnosi się do serwera.
Porada Aby upewnić się, że używasz poprawny adres URL, użyj Team Explorer do zespołu projektu na serwerze otwórz i sprawdź właściwości adresu URL serwera.
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
Uzyskiwanie dodatkowych usług Fundacji zespołu
Usługi dodatkowe można uzyskać dostęp za pomocą jednej z metod GetService, klasa abstrakcyjna TfsConnection definiuje i TfsConfigurationServer i TfsTeamProjectCollection wdrożenia.
Kiedy używać TfsConfigurationServer klasy, dostępu do usług, dla całego serwera.Kiedy używać TfsTeamProjectCollection klasy dostępu usług dla kolekcji zespołu projektu.Na przykład ITeamFoundationRegistry usługi dla TfsConfigurationServer zawiera zarejestrowanych właściwości serwera.Tę samą usługę nabytej z TfsTeamProjectCollection zapewnia zarejestrowanych właściwości kolekcji zespołu projektu.Niektóre usługi stosuje się do zespołu projektu tylko kolekcje.
Usługi |
TfsConfigurationServer (serwer poziom) |
TfsTeamProjectCollection (kolekcji poziom) |
---|---|---|
Działając w imieniu innego użytkownika (Personifikacja)
Kiedy łączysz się z Team Foundation Server, można stosować metodę, która obsługuje personifikację do działania w imieniu tożsamości niż uruchamia aplikację.Wszystkie operacje wykonywane są oparte na, że połączenia będą wykonywane w imieniu tożsamości personifikowanego.Na przykład, aplikacja może uruchamiane z tożsamością użytkownika, ale utworzyć połączenie z Team Foundation Server , personifikuje użytkownika B.Użytkownik a sprawdza zmiany kodu źródłowego w tych warunkach, changeset rejestruje tego użytkownika b zaewidencjonować zmiany.
Przy użyciu tożsamości Fundacji zespołu
Można użyć IdentityDescriptor obiektu po podłączeniu do Team Foundation Server do określenia tożsamości personifikacji.IdentityDescriptor Określa tożsamość, Team Foundation definiuje.Korzystając z tej strategii, nie trzeba określać hasła.Uwierzytelnioną tożsamość musi mieć żądania w imieniu innego użytkownika uprawnienia, z wyjątkiem przypadków, gdy uwierzytelnieni (użytkownika A) i tożsamości personifikowanego (użytkownika B) są takie same.
Poziom serwera |
---|
|
Poziom pobierania |
---|
|
Za pomocą uwierzytelnionych poświadczeń
Można użyć ICredentials obiektu po podłączeniu do Team Foundation Server do określenia tożsamości personifikacji.Strategia ta nie wymaga specjalnych uprawnień, ale musi być w stanie uzyskać hasło tożsamości do tworzenia ICredentials obiektu.
Można również określić implementacja ICredentialsProvider po podłączeniu do Team Foundation Server do obsługi żądań uzyskania nowych poświadczeń.System wymaga wykonania ICredentialsProvider określić nowe żądanie poświadczenia po poświadczenia, które są określone przez ICredentials obiektu są pomyślnie uwierzytelniony lub upoważniony do wykonania operacji.
Aby monitować użytkownika o poświadczenia, można użyć UICredentialsProvider klasy, który implementuje ICredentialsProvider , wyświetlając okno dialogowe logowania, aby monitować użytkownika o nowe poświadczenia.
Poziom serwera |
---|
|
Poziom pobierania |
---|
|
Używając kombinacji technik
Można korzystać zarówno Team Foundation tożsamości i uwierzytelnionych poświadczeń, łącząc się z Team Foundation Server.Na przykład aplikacja może działać w obszarze poświadczenia dla użytkownika, ale mogą używać poświadczeń dla użytkownika b i określ IdentityDescriptor dla użytkownika c po podłączeniu do Team Foundation Server.W przypadku żądań przy użyciu danego połączenia są uwierzytelniony jako użytkownik B, ale wykonywaną w imieniu użytkownika C.Dla tej strategii powiodła się, użytkownik b musi mieć żądania w imieniu innego użytkownika uprawnienia.
Poziom serwera |
---|
|
Poziom pobierania |
---|
|
Zasoby dodatkowe
Organizowanie na serwerze zespołu projektu kolekcje
Połączyć się z zespołu projektów w Team Foundation Server
Wprowadzenie, TfsConnection, TfsConfigurationServer i TfsTeamProjectCollection klasy w witrynie sieci Web firmy Microsoft
Wersja API sterowania przy użyciu personifikacji TFS w witrynie sieci Web firmy Microsoft.