使用 Microsoft.TeamFoundation.WorkItemTracking.Client 組建簡易工作項目總管,示範核心操作:連線、查詢、檢視/編輯、建立新項目。
Imports Microsoft.TeamFoundation.WorkItemTracking.Client
' ...
m_tfsWIT = CType(m_tfs.GetService(GetType(WorkItemStore)), WorkItemStore)
mprj = mwis.Projects.Item(selectedTeamProjectName)
或用 DomainProjectPicker 類(Microsoft.TeamFoundation.Proxy)彈出 GUI 選擇伺服器與專案。
mwis.Query("SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = '...'")mprj.StoredQueries,支援巨集 @project、@today。WorkItemStore.Query(wiql, params) 或 StoredQuery.Query()。WIQL 類 SQL,欄位名含空格需方括號(如 [System.Title]),參考名稱用完整名稱(如 System.Title)。
三大控件(Microsoft.TeamFoundation.WorkItemTracking.Controls.dll):
編輯表單截圖:

If wifCtl.Item.IsDirty AndAlso Not IsCanceled Then
Select Case MessageBox.Show("儲存變更?", ...)
Case Yes: e.Cancel = Not Save()
Case No: If wifCtl.Item.IsDirty OrElse Not wifCtl.Item.IsValid Then wifCtl.Item.Reset()
Case Cancel: e.Cancel = True
End Select
End If
Function Save() As Boolean
Dim badFields = wifCtl.Item.Validate()
If Not wifCtl.Item.IsValid Then ' 顯示無效欄位 ' Return False
wifCtl.Item.Save()
If IsNewWI Then MessageBox.Show($"新 {wifCtl.Item.Type.Name} 已儲存,ID={wifCtl.Item.Id}")
Return True
End Function
Dim wi As WorkItem = mprj.WorkItemTypes(selectedTypeName).NewWorkItem()
Using f As New frmAWorkItem(wi) : f.ShowDialog(Me) : End Using
WIT 物件模型豐富,內建控件大幅降低 UI 開發成本。下一專欄將整合工作項目支援至 Word 增益集。