Подключение к серверу Team Foundation Server из консольного приложения
Можно программно подключиться к серверу, на котором запущена Team Foundation, а затем получить доступ к командным проектам на этом сервере при использовании в следующем примере.При изменении примере, можно использовать службы, Getting Additional Team Foundation Services описаны далее в этом разделе.Можно также действовать от имени других с помощью олицетворения, как Acting on Behalf of Another User (Impersonation) описаны далее в этом разделе.
Содержание раздела
Пример
Можно перечислять коллекции командных проектов и командные проекты, которые они содержат при использовании в следующем примере.
Чтобы использовать этот пример
Создайте консольное приложение C#.
Добавьте ссылки на следующие сборки:
Примечание Если Microsoft.TeamFoundation.Common Microsoft.TeamFoundation.Client и не выводятся на вкладке .NET диалогового окна Ссылки, воспользуйтесь вкладкой Обзор для добавления сборки.Их можно найти в папке " %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0.
Замените содержимое Program.cs с кодом, который появляется позже в этом разделе.
В этом коде замените сервер, порт и VDir в url-адресе, который используется для построения объекта TfsConfigurationServer, что URL-адрес ссылался на сервер.
Совет Чтобы убедиться в том, что используется правильный URL-адрес, используйте Team Explorer чтобы открыть командный проект на сервере, и проверьте свойства 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 (коллекция-уровень) |
---|---|---|
Функционирования имени другого пользователя (олицетворение)
При подключении к Team Foundation Server, можно использовать обозреватель метод то олицетворение, чтобы задействовать его именем идентификатора кроме одного, выполняемое приложение.Все операции, которые выполняются на основе этого выполняются от имени олицетворенного соединения идентификатора.Например, приложение может выполняться под идентификатором пользователя, а только при создании соединения с Team Foundation Server, олицетворяет пользователя б.Если пользователь a вернет изменения к исходному коду при следующих условиях, то набор изменений запишет, что пользователь б вернуло изменение.
С помощью идентификатора Team Foundation
Можно использовать объект IdentityDescriptor при подключении к Team Foundation Server чтобы определить идентификатор для олицетворения.IdentityDescriptor указывающее идентификатор, который Team Foundation.При использовании этой стратегии, нет необходимости указывать пароль.Проверенный идентификатор должен иметь разрешение Выполнять запросы от имени другого пользователя, за исключением того, что если пользователь с проверкой подлинности (a) и воплощенные (B) одинаковые идентификаторы пользователей.
На уровне сервера |
---|
|
Коллекция-уровень |
---|
|
Использование авторизованные учетные данные
Можно использовать объект ICredentials при подключении к Team Foundation Server чтобы определить идентификатор для олицетворения.Эта стратегия не требует специальных разрешений, но необходимо иметь возможность получить пароль идентификатора для создания объекта ICredentials.
Также можно указать реализацию ICredentialsProvider при подключении к Team Foundation Server для обработки запросов для новых учетных данных.Системные вызовы реализация ICredentialsProvider которой можно указать, чтобы запросить новые учетные данные, когда учетные данные, определенные объектом ICredentials не выполняется успешно или не авторизоватьы для выполнения операции.
Для запроса у пользователя учетных данных, можно использовать класс UICredentialsProvider, который реализует ICredentialsProvider путем отображения диалогового окна входа для запроса пользователя для новых учетных данных.
На уровне сервера |
---|
|
Коллекция-уровень |
---|
|
Использование методов комбинация
Можно использовать и идентификатор Team Foundation и учетные данные, прошедшие проверку подлинности при подключении к Team Foundation Server.Например, приложение может выполняться под учетными данными пользователя, но могут использовать учетные данные для пользователя б и определение IdentityDescriptor для пользователей C# при подключении к Team Foundation Server.В этом случае запросы, которые выполняются с помощью этого соединения проверку подлинности как пользователь б, но выполняются от имени пользователя c#.Для этой стратегии, который будет успешным, B пользователя должно быть разрешение Выполнять запросы от имени другого пользователя.
На уровне сервера |
---|
|
Коллекция-уровень |
---|
|
Дополнительные ресурсы
Организация сервера с помощью коллекций командных проектов
Подключение к командным проектам на сервере Team Foundation Server
Вставка TfsConnection, TfsConfigurationServer и классы TfsTeamProjectCollection на веб-сайте Майкрософт
Использование олицетворения Team Foundation Server с API управления версиями на веб-сайте Майкрософт.