我正在尝试编写一个Vistual Studio 2008宏来运行存储的TFS查询并显示结果.
以前我创建了一个查询,并将其命名为“Assigned to Me”,以显示当前分配给我的所有工作项.
而不是View->团队资源管理器,单击,单击树到我的查询,然后双击’分配给我’我想写一个宏来自动执行这些步骤.
以前我创建了一个查询,并将其命名为“Assigned to Me”,以显示当前分配给我的所有工作项.
而不是View->团队资源管理器,单击,单击树到我的查询,然后双击’分配给我’我想写一个宏来自动执行这些步骤.
我提出的最好的是相当混乱:
Sub TemporaryMacro() DTE.Windows.Item("{131369F2-062D-44A2-8671-91FF31EFB4F4}").Activate() 'Team Explorer DTE.ActiveWindow.Object.GetItem("tfsserver\MyProject\Work Items\My Queries\Assigned to Me").Select(vsUISelectionType.vsUISelectionTypeSelect) DTE.ActiveWindow.Object.DoDefaultAction() DTE.Windows.Item("{131369F2-062D-44A2-8671-91FF31EFB4F4}").Close() DTE.Windows.Item("Assigned to Me [Results]").Activate() End Sub
有没有更好的办法?
解决方法
我编写了一个自定义的Windows窗体应用程序,允许我运行自己的动态查询,并创建新的或更新现有的工作项.
下面是我用来连接到TFS 2010服务器,运行查询并返回结果的代码部分的简化版本.
Imports Microsoft.TeamFoundation.Client Imports Microsoft.TeamFoundation.WorkItemTracking.Client Imports System.Net Imports System.Text.RegularExpressions Imports System.Data.SqlTypes Public Class DNATFSProxy Private _teamProjectCollection As TfsTeamProjectCollection Private _workItemStore As WorkItemStore Private _projectName As String Private _project As Project Public Sub Connect() _teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(New Uri(_uri)) _workItemStore = New WorkItemStore(_teamProjectCollection) _project = _workItemStore.Projects(_projectName) End Sub Public Sub GetWorkItems(ByVal whereClause As String) If _workItemStore IsNot Nothing Then 'Attempt to get the work items Dim query As String = String.Format("SELECT * FROM WorkItems WHERE {0}",whereClause) Dim workItemCollection As WorkItemCollection = _workItemStore.Query(query) 'Iterate through each work item For Each workItem As WorkItem In workItemCollection 'Insert your custom code here Dim title As String = workItem.Title.ToString() 'You can also update the work item in TFS workItem.Title = "New title" workItem.Save() Next End If End Sub Public Property URI() As String Get Return _uri End Get Set(ByVal value As String) _uri = value End Set End Property Public Property Project() As String Get Return _projectName End Get Set(ByVal value As String) _projectName = value End Set End Property End Class
然后,您可以按如下方式调用此代理:
Dim proxy As New DNATFSProxy() proxy.URI = "http://tfs:8080/tfs/DefaultCollection" proxy.Project = "Your Project Name" proxy.Connect() proxy.GetWorkItems("Insert your query here")
我希望这有帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。