gpt4 book ai didi

c# - 使用 TFS 2010 API 订阅工作区事件

转载 作者:太空宇宙 更新时间:2023-11-03 14:21:39 24 4
gpt4 key购买 nike

我正在尝试编写一些代码来监视本地工作站上的 TFS 工作区,但目前我在触发事件时遇到了问题。

例如,如果我在我的工作区中映射一个新文件夹,我想订阅 versionControl.UpdatedWorkspace 事件,如果我执行“get”,我想映射到 versionControl.Getting 事件。下面的代码是一个控制台应用程序,我认为它应该可以工作,但是当我这样做时什么也没有发生。有谁知道如何成功订阅这些事件?

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);
}


}
}

最佳答案

我的理解是,这些事件发生在您本地的 VersionControlServer 实例上。也就是说,当您在代码中对该实例进行操作时,它们就会触发。

例如,如果您在代码的其他地方更新了一个工作区,则 UpdatedWorkspace 处理程序将触发。

您可以在服务器端订阅一小部分事件( checkin 、构建等),但我不确定您是否可以通过 VersionControlServer 类监控服务器上发生的事情。

关于c# - 使用 TFS 2010 API 订阅工作区事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5184252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com