Поделиться через


Подключение к серверу Team Foundation Server из консольного приложения

Можно программно подключиться к серверу, на котором запущена Team Foundation, а затем получить доступ к командным проектам на этом сервере при использовании в следующем примере.При изменении примере, можно использовать службы, Getting Additional Team Foundation Services описаны далее в этом разделе.Можно также действовать от имени других с помощью олицетворения, как Acting on Behalf of Another User (Impersonation) описаны далее в этом разделе.

Содержание раздела

Пример

Можно перечислять коллекции командных проектов и командные проекты, которые они содержат при использовании в следующем примере.

Чтобы использовать этот пример

  1. Создайте консольное приложение C#.

  2. Добавьте ссылки на следующие сборки:

    ПримечаниеПримечание

    Если Microsoft.TeamFoundation.Common Microsoft.TeamFoundation.Client и не выводятся на вкладке .NET диалогового окна Ссылки, воспользуйтесь вкладкой Обзор для добавления сборки.Их можно найти в папке " %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0.

  3. Замените содержимое Program.cs с кодом, который появляется позже в этом разделе.

  4. В этом коде замените сервер, порт и VDir в url-адресе, который используется для построения объекта TfsConfigurationServer, что URL-адрес ссылался на сервер.

    СоветСовет

    Чтобы убедиться в том, что используется правильный URL-адрес, используйте Team Explorer чтобы открыть командный проект на сервере, и проверьте свойства url-адреса сервера.

    Свойства 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
    
    

Получение дополнительных служб Team Foundation

Можно получить доступ к дополнительным службы с помощью одного из методов GetService, абстрактный класс TfsConnection определяет и TfsConfigurationServer и TfsTeamProjectCollection, которые реализуют.

При использовании класса TfsConfigurationServer доступ к службам для всего сервера.При использовании класса TfsTeamProjectCollection доступ к службам для коллекции командных проектов.Например, служба ITeamFoundationRegistry для TfsConfigurationServer предоставляет присутствуют зарегистрированные свойства сервера.Одну и ту же службу, приобретена из TfsTeamProjectCollection предоставляет присутствуют зарегистрированные свойства коллекции командных проектов.Некоторые службы применяются только к коллекциям командных проектов.

Служба

TfsConfigurationServer

(на уровне сервера)

TfsTeamProjectCollection

(коллекция-уровень)

ITeamFoundationRegistry

флажок

флажок

IIdentityManagementService

флажок

флажок

ITeamFoundationJobService

флажок

флажок

IPropertyService

флажок

флажок

IEventService

флажок

флажок

ISecurityService

флажок

флажок

ILocationService

флажок

флажок

TswaClientHyperlinkService

флажок

флажок

ITeamProjectCollectionService

флажок

IAdministrationService

флажок

флажок

ICatalogService

флажок

VersionControlServer

флажок

WorkItemStore

флажок

IBuildServer

флажок

ITestManagementService

флажок

ILinking

флажок

ICommonStructureService3

флажок

IServerStatusService

флажок

IProcessTemplates

флажок

Функционирования имени другого пользователя (олицетворение)

При подключении к Team Foundation Server, можно использовать обозреватель метод то олицетворение, чтобы задействовать его именем идентификатора кроме одного, выполняемое приложение.Все операции, которые выполняются на основе этого выполняются от имени олицетворенного соединения идентификатора.Например, приложение может выполняться под идентификатором пользователя, а только при создании соединения с Team Foundation Server, олицетворяет пользователя б.Если пользователь a вернет изменения к исходному коду при следующих условиях, то набор изменений запишет, что пользователь б вернуло изменение.

Bb286958.collapse_all(ru-ru,VS.110).gifС помощью идентификатора Team Foundation

Можно использовать объект IdentityDescriptor при подключении к Team Foundation Server чтобы определить идентификатор для олицетворения.IdentityDescriptor указывающее идентификатор, который Team Foundation.При использовании этой стратегии, нет необходимости указывать пароль.Проверенный идентификатор должен иметь разрешение Выполнять запросы от имени другого пользователя, за исключением того, что если пользователь с проверкой подлинности (a) и воплощенные (B) одинаковые идентификаторы пользователей.

На уровне сервера

  • TfsConfigurationServer.TfsConfigurationServer(RegisteredConfigurationServer, IdentityDescriptor)

  • TfsConfigurationServer.TfsConfigurationServer(Uri, IdentityDescriptor)

Коллекция-уровень

  • TfsTeamProjectCollection.TfsTeamProjectCollection(RegisteredProjectCollection, IdentityDescriptor)

  • TfsTeamProjectCollection.TfsTeamProjectCollection(Uri, IdentityDescriptor)

Bb286958.collapse_all(ru-ru,VS.110).gifИспользование авторизованные учетные данные

Можно использовать объект ICredentials при подключении к Team Foundation Server чтобы определить идентификатор для олицетворения.Эта стратегия не требует специальных разрешений, но необходимо иметь возможность получить пароль идентификатора для создания объекта ICredentials.

Также можно указать реализацию ICredentialsProvider при подключении к Team Foundation Server для обработки запросов для новых учетных данных.Системные вызовы реализация ICredentialsProvider которой можно указать, чтобы запросить новые учетные данные, когда учетные данные, определенные объектом ICredentials не выполняется успешно или не авторизоватьы для выполнения операции.

Для запроса у пользователя учетных данных, можно использовать класс UICredentialsProvider, который реализует ICredentialsProvider путем отображения диалогового окна входа для запроса пользователя для новых учетных данных.

На уровне сервера

Коллекция-уровень

Bb286958.collapse_all(ru-ru,VS.110).gifИспользование методов комбинация

Можно использовать и идентификатор Team Foundation и учетные данные, прошедшие проверку подлинности при подключении к Team Foundation Server.Например, приложение может выполняться под учетными данными пользователя, но могут использовать учетные данные для пользователя б и определение IdentityDescriptor для пользователей C# при подключении к Team Foundation Server.В этом случае запросы, которые выполняются с помощью этого соединения проверку подлинности как пользователь б, но выполняются от имени пользователя c#.Для этой стратегии, который будет успешным, B пользователя должно быть разрешение Выполнять запросы от имени другого пользователя.

На уровне сервера

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

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

Коллекция-уровень

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

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

Дополнительные ресурсы

Организация сервера с помощью коллекций командных проектов

Подключение к командным проектам на сервере Team Foundation Server

Вставка TfsConnection, TfsConfigurationServer и классы TfsTeamProjectCollection на веб-сайте Майкрософт

Использование олицетворения Team Foundation Server с API управления версиями на веб-сайте Майкрософт.