2012-01-12 51 views
1

当我们编写自定义TFS插件的C#代码时,我们正在捕获签入事件。我们如何检索用户正在签入的项目名称?如何在使用TFS自定义插件时获取项目名称

+2

你是什么意思的'项目':* .csproj,TeamProject或其他?如果未完成的变更集包含来自不同项目的内容,你会怎么做? – pantelif 2012-01-12 16:24:33

回答

2

团队项目名称始终是路径的第一部分。例如,如果在一个文件中的用户检查:

$/ExampleProject/Folder/File.txt 

那么团队项目名称是ExampleProject。该TFS SDK有一个辅助方法,让你获得给定源控制路径的团队项目名称:

string teamProjectName = 
    VersionControlPath.GetTeamProjectName("$/ExampleProject/Folder/File.txt"); 

注意,您可以在同一时间检查到多个团队项目。例如,待更改可能包含修改:

$/Project1/Folder/File.txt 
$/Project2/Folder/File.txt 

在这种情况下,用户被检测到两个Project1Project2

1

拍摄时使用TFS 2010插件,你环通所有CheckinNotification属性(如notificationEventArgs CheckinNotification)签入事件,我得到..... 变更集, 评论, 计算机名, NotificationInfo, 选项, CheckinNote, PolicyOverrideInfo, ChangesetOwnerName, WorkspaceOwnerName,工作区名 , CheckinType, SubmittedItems, HasAllItems

提交的项目是一个集合,只是环通集合...

string myitem=""; 
CheckinNotification data = notificationEventArgs as CheckinNotification; 
if (data != null) 
{     
Type type = data.GetType(); 
PropertyInfo[] myproperties = type.GetProperties(); 
if (property.Name == "SubmittedItems") 
{ 
foreach (var checkin in data.SubmittedItems) 
myitem = checkin.ToString(); 
} 
} 
} 

这会给你所有已在被检查的文件。这仅仅是局部的代码,你需要找到实例来自nielshebling.de标题为TFS 2010:使用插件注册一个事件

相关问题