c# - org - mapwindows 5
Usar la API de TFS 2010 para suscribirse a eventos de área de trabajo (1)
Intento escribir un código que supervise los espacios de trabajo de TFS en mi estación de trabajo local, pero por el momento tengo problemas para activar los eventos.
Por ejemplo, si mapeo una nueva carpeta en mi área de trabajo, quiero suscribirme al evento versionControl.UpdatedWorkspace, y si hago un "obtener" quiero asignarme al evento versionControl.Getting. El siguiente código es una aplicación de consola que creo que debería funcionar, pero cuando lo hago, no pasa nada. ¿Alguien sabe cómo suscribirse con éxito a estos eventos?
VS2010, TFS 2010, WinXP SP3
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Net;
using System.Text;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Framework.Client;
using Microsoft.TeamFoundation.Framework.Common;
using Microsoft.TeamFoundation.VersionControl.Client;
namespace TestEventHanling
{
class Program
{
static void Main(string[] args)
{
Uri serverUri = new Uri(@"http://TfsServer:8080/tfs/collection");
using (TfsTeamProjectCollection collection = new TfsTeamProjectCollection(serverUri, CredentialCache.DefaultCredentials))
{
VersionControlServer versionControl = (VersionControlServer)collection.GetService(typeof(VersionControlServer));
versionControl.UpdatedWorkspace += new WorkspaceEventHandler(OnUpdatedWorkspace);
versionControl.Getting += new GettingEventHandler(OnGetting);
Console.WriteLine("Press /'q/' to quit.");
while (Console.Read() != ''q'') ;
}
}
internal static void OnUpdatedWorkspace(object sender, WorkspaceEventArgs e)
{
foreach (WorkingFolder wf in e.Workspace.Folders)
{
Console.WriteLine("Workspace updated {0}", wf.ServerItem);
}
}
internal static void OnGetting(Object sender, GettingEventArgs e)
{
Console.WriteLine("Getting: {0}, status: {1}", e.TargetLocalItem, e.Status);
}
}
}
Según entiendo, estos son eventos que se encuentran en su instancia local de VersionControlServer. Es decir, se dispararán cuando actúes en esa instancia en tu código.
Por ejemplo, si, en algún otro lugar de tu código, actualizaste un espacio de trabajo, se UpdatedWorkspace
controlador UpdatedWorkspace
.
Hay un conjunto más pequeño de eventos que puede suscribirse al lado del servidor (check-in, compilaciones, etc.), pero no estoy seguro de que pueda monitorear lo que está sucediendo en el servidor a través de la clase VersionControlServer.