Conectar con el servidor Team Foundation Server desde una aplicación de consola
Mediante programación puede conectarse a un servidor que ejecute Team Foundation y después tener acceso a los proyectos de equipo en ese servidor si utiliza el ejemplo siguiente.Si modifica el ejemplo, puede utilizar los servicios que Getting Additional Team Foundation Services se describe más adelante en este tema.También puede representar en nombre de otros con suplantación, como Acting on Behalf of Another User (Impersonation) se describe más adelante en este tema.
En este tema
Ejemplo
Puede mostrar las colecciones de proyectos de equipo y los proyectos de equipo que contienen si utiliza el ejemplo siguiente.
Para utilizar este ejemplo
Cree una aplicación de consola de C#.
Agregue referencias a los siguientes ensamblados:
[!NOTA]
Si Microsoft.TeamFoundation.Client y Microsoft.TeamFoundation.Common no aparecen en la pestaña de .NET del cuadro de diálogo de Referencias , utilice la pestaña de Examinar para agregar ensamblados.Puede encontrarlos en %ProgramFiles% \ Microsoft Visual Studio 10,0 \ Common7 \ IDE \ ReferenceAssemblies \ v2.0.
Reemplace el contenido Program.cs con el código que aparece más adelante en este tema.
En el código, reemplace Servidor, Puerto, y VDir en la dirección URL que se utiliza para crear el objeto de TfsConfigurationServer de modo que la dirección URL hace referencia al servidor.
Sugerencia Para asegurarse de que está utilizando la dirección URL correcta, utilice Team Explorer para abrir un proyecto de equipo en el servidor y, compruebe las propiedades URL del 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
Obtención de Team Foundation Services adicional
Puede tener acceso a servicios adicionales mediante uno de los métodos GetService que la clase abstracta TfsConnection define y que implementan TfsConfigurationServer y TfsTeamProjectCollection .
Cuando utiliza la clase de TfsConfigurationServer , tiene acceso a los servicios del servidor entero.Cuando utiliza la clase de TfsTeamProjectCollection , tiene acceso a los servicios para la colección de proyectos de equipo.Por ejemplo, el servicio de ITeamFoundationRegistry para TfsConfigurationServer proporciona propiedades registradas de servidor.El mismo servicio que se adquiere de TfsTeamProjectCollection proporciona propiedades registradas de una colección de proyectos de equipo.Algunos servicios se aplican a las colecciones de proyectos de equipo solamente.
Servicio |
TfsConfigurationServer (Servidor-nivel) |
TfsTeamProjectCollection (colección-nivel) |
---|---|---|
Actuar en nombre de otro usuario (suplantación)
Cuando se conecta a Team Foundation Server, puede utilizar un método que admita a la suplantación que actúan en nombre de una identidad distinta de la que se ejecuta la aplicación.Cualquier operación se realice basándose en esa conexión se realiza en nombre de la identidad suplantada.Por ejemplo, la aplicación podría ejecutarse con la identidad del usuario A pero crear una conexión a Team Foundation Server que suplanta b del usuario.Si los que el usuario A un cambio en el código fuente en estas condiciones, el conjunto de cambios registrados que b de usuario protegió el cambio.
Mediante Team Foundation Identity
Puede utilizar un objeto de IdentityDescriptor cuando se conecta a Team Foundation Server para especificar la identidad para suplantar.IdentityDescriptor especifica una identidad que Team Foundation defina.Con esta estrategia, no es necesario especificar una contraseña.La identidad autenticada debe tener el permiso de haga las solicitudes en nombre de otro usuario , excepto cuando autenticado (el usuario A) y suplantado (las identidades de usuario B) es igual.
Servidor-nivel |
---|
|
Colección-nivel |
---|
|
Mediante las credenciales autenticadas
Puede utilizar un objeto de ICredentials cuando se conecta a Team Foundation Server para especificar la identidad para suplantar.Esta estrategia no requiere permisos especiales, pero debe poder obtener la contraseña de la identidad para crear el objeto de ICredentials .
También puede especificar una implementación de ICredentialsProvider cuando se conecta a Team Foundation Server para controlar las solicitudes para las nuevas credenciales.El sistema la implementación de ICredentialsProvider que especifique para aplicar las nuevas credenciales cuando las credenciales especificadas por el objeto de ICredentials no se autentican ni se autoriza correctamente a realizar la operación.
Para solicitar al usuario las credenciales, puede utilizar la clase de UICredentialsProvider , que implementa ICredentialsProvider muestra un cuadro de diálogo de inicio de sesión para preguntar al usuario para las nuevas credenciales.
Servidor-nivel |
---|
|
Colección-nivel |
---|
|
Mediante una combinación de técnicas
Puede utilizar una identidad de Team Foundation y las credenciales autenticadas cuando se conecta a Team Foundation Server.Por ejemplo, la aplicación podría ejecutarse bajo las credenciales del usuario A, pero puede utilizar credenciales para b de usuario y especifique IdentityDescriptor para el usuario C al conectarse a Team Foundation Server.En este caso, las solicitudes que se realizan utilizando esa conexión se autentican como b de usuario pero se realizan en nombre de usuario C.Para que esta estrategia tiene éxito, b de usuario debe tener el permiso de haga las solicitudes en nombre de otro usuario .
Servidor-nivel |
---|
|
Colección-nivel |
---|
|
Recursos adicionales
Organizar el servidor con colecciones de proyectos de equipo
Conectarse a proyectos de equipo en Team Foundation Server
Introducción de TfsConnection, de TfsConfigurationServer, y las clases de TfsTeamProjectCollection en el sitio Web de Microsoft
Mediante la suplantación de TFS con control de versiones API en el sitio Web de Microsoft.