Conectando ao Team Foundation Server de um aplicativo de console
Você pode programaticamente se conectar a um servidor que esteja executando Team Foundation e para acessar os projetos de equipe em esse servidor se você usar o seguinte exemplo.Se você alterar o exemplo, você pode usar os serviços que Getting Additional Team Foundation Services descreve posteriormente em este tópico.Você também pode atuar em nome de outro usando representação, porque Acting on Behalf of Another User (Impersonation) descreve posteriormente em este tópico.
Neste tópico
Exemplo
Você pode listar as coleções de projeto de equipe e a equipe projetos que contenham se você usar o seguinte exemplo.
Para usar este exemplo
Crie um aplicativo de console C#.
Adicione referências para os seguintes conjuntos de módulos (assemblies) :
Observação Se Microsoft.TeamFoundation.Client e Microsoft.TeamFoundation.Common não aparecem na guia de .NET da caixa de diálogo de Referências , use a guia de Procurar para adicionar conjuntos.Você poderá encontrá-las em %ProgramFiles% \ Microsoft Visual Studio 10,0 \ Common7 \ IDE \ v2.0 \ ReferenceAssemblies.
Substitua o conteúdo de Module.vb com o código que aparece em este tópico posteriormente.
Em esse código, substitua Servidor, porta, e VDir na URL que é usado para construir o objeto de TfsConfigurationServer de modo que a URL consulte o servidor.
Dica Para certificar-se que você está usando o URL correto, use Team Explorer para abrir um projeto de equipe em seu servidor, e verifique as propriedades do URL do servidor.
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
Obtendo serviços adicionais do team foundation
Você pode acessar serviços adicionais usando um dos métodos de GetService que a classe abstrata TfsConnection define e que TfsConfigurationServer e TfsTeamProjectCollection implementam.
Quando você usa a classe de TfsConfigurationServer , você acessar os serviços para o servidor inteiro.Quando você usa a classe de TfsTeamProjectCollection , você acessar os serviços para a coleção de projeto de equipe.Por exemplo, o serviço de ITeamFoundationRegistry para TfsConfigurationServer fornece propriedades registradas do servidor.O mesmo serviço que é adquirido de TfsTeamProjectCollection fornece propriedades registradas de uma coleção de projeto de equipe.Alguns serviços se aplicam às coleções de projeto de equipe somente.
Serviço |
TfsConfigurationServer (o nível) |
TfsTeamProjectCollection (coleção nível) |
---|---|---|
Atuar em nome de outro usuário (representação)
Quando você se conecta a Team Foundation Server, você pode usar um método que ofereça suporte a representação para atuar em nome de uma identidade diferente de aquele que executa o aplicativo.Todas as operações que são executadas com base na conexão serão executadas em nome de identidade representada.Por exemplo, seu aplicativo pode executar sob a identidade do usuário A mas criar uma conexão a Team Foundation Server que representa o usuário B.Se o usuário A fazer o check-in uma alteração no código-fonte em essas condições, o conjunto de alterações gravará que o usuário B fazer o check-in da alteração.
Usando uma identidade do team foundation
Você pode usar um objeto de IdentityDescriptor quando você se conecta a Team Foundation Server para especificar a identidade para representar.IdentityDescriptor especifica uma identidade que Team Foundation define.Quando você usa essa estratégia, você não precisa especificar uma senha.A identidade autenticada deve ter a permissão de Fazer solicitações em nome de outro usuário , a não ser que quando Um usuário autenticado () e (representado identidades de usuário B) é o mesmo.
o nível |
---|
|
Coleções nível |
---|
|
Usando credenciais autenticadas
Você pode usar um objeto de ICredentials quando você se conecta a Team Foundation Server para especificar a identidade para representar.Essa estratégia não requer permissões especiais, mas você deve poder obter a senha de identidade para criar o objeto de ICredentials .
Você também pode especificar uma implementação de ICredentialsProvider quando você se conecta a Team Foundation Server para manipular as solicitações para novos credenciais.O sistema chama a implementação de ICredentialsProvider que você especifica para solicitar novos credenciais quando as credenciais que são especificadas pelo objeto de ICredentials não são autenticados ou não estão autorizados com êxito executar a operação.
Para solicitar ao usuário para as credenciais, você pode usar a classe de UICredentialsProvider , que implementa ICredentialsProvider exibindo uma caixa de diálogo de login para solicitar ao usuário para novos credenciais.
o nível |
---|
|
Coleções nível |
---|
|
Usando uma combinação de técnicas
Você pode usar uma identidade de Team Foundation e credenciais autenticadas quando você se conecta a Team Foundation Server.Por exemplo, seu aplicativo pode executar em credenciais do usuário Para, mas você pode usar credenciais do usuário B e especificar IdentityDescriptor para o usuário C quando você se conecta a Team Foundation Server.Em esse caso, as solicitações que são feitas usando a conexão são autenticadas como o usuário B mas executadas em nome do usuário C.Para essa estratégia que foi bem-sucedida, o usuário B deve ter a permissão de Fazer solicitações em nome de outro usuário .
o nível |
---|
|
Coleções nível |
---|
|
Recursos adicionais
Organizando seu servidor com coleções de projeto de equipe
Conectar-se a projetos de equipe no Team Foundation Server
Introdução ao TfsConnection, o TfsConfigurationServer, e as classes de TfsTeamProjectCollection no site da Microsoft
Usando representação de TFS com APIs de controle de versão no site da Microsoft.