Как открыть WorkItem (VS-Team Explorer) из-за пределов визуальной студии?
Я хочу открыть рабочий элемент за пределами Visual Studio, используя код C#. Является ли это возможным?
Я пытался с этим:
IWorkItemDocument widoc = null;
try
{
string tfsName = "http://rd-tfs-no2:8080/tfs/siproducts";
var projectCollectionUri = new Uri(tfsName);
var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(projectCollectionUri, new UICredentialsProvider());
projectCollection.EnsureAuthenticated();
DocumentService docService = (DocumentService)Package.GetGlobalService(typeof(DocumentService));
widoc = docService.GetWorkItem(projectCollection, id,this);
docService.ShowWorkItem(widoc);
}
finally
{
widoc.Release(this);
}
Но помогите меньше, я получаю нулевое значение для docService.
Любое хорошее предложение?
3 ответа
Package
работает только тогда, когда вы работаете над плагином Visual Studio. Если вы ищете способ отображения рабочего элемента, вы можете сделать это, сопоставив поля с вашим приложением winform/WPF, или разместив оболочку в Internet Explorer и передав идентификатор рабочего элемента в URL для веб-интерфейса. зритель.
Возможно, вы захотите посмотреть на объект WorkItemStore в TFS API.
TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(Constants.TEAMFOUNDSERVER);
WorkItemStore workItemStore = (WorkItemStore)tfs.GetService(typeof(WorkItemStore));
string wiqlQuery = "SELECT [System.Id] FROM WorkItems";
WorkItemCollection wic = workItemStore.Query(wiqlQuery);
foreach (WorkItem wi in wic)
{
//do work here
}
Чтобы получить документ службы, попробуйте это:
var dte2 = Marshal.GetActiveObject("VisualStudio.DTE.10.0") as DTE2;
var witDocumentService = (DocumentService)dte2.DTE.GetObject("Microsoft.VisualStudio.TeamFoundation.WorkItemTracking.DocumentService");