Как открыть 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");
Другие вопросы по тегам