Как я могу импортировать рабочие элементы TFS с прямыми ссылками «многие ко многим» из Excel - PullRequest
0 голосов
/ 19 июля 2011

У меня есть таблица требований Excel , созданная из ReqPro, которую необходимо импортировать в TFS. Каждое требование имеет поле связанный с и связанный с , оба из которых могут содержать более одной записи. Поскольку отношение ссылки много ко многим , необходимо использовать тип direct-link (не parent-child ). Я думал, что смогу импортировать это с помощью Excel 2010, однако при открытии запроса с использованием прямых ссылок в Excel результаты flat и не содержат информации о связях. У меня более 10 000 таких требований для импорта с тысячами ссылок, поэтому мне нужно автоматизировать это. Есть ли простой способ импортировать многие-ко-многие прямые ссылки в TFS?

1 Ответ

1 голос
/ 19 июля 2011

Сожалею, что это сделано специально, посмотрите на эту ошибку в Microsoft Connect http://connect.microsoft.com/VisualStudio/feedback/details/667973/tfs-2010-work-items-with-direct-links-query-goes-to-excel-as-a-flat-list#.

Однако, кажется, есть несколько обходных путей,

  1. Если для просмотра результатов запроса требуется все, вы можете отправить сообщение по электронной почте или просмотреть результаты на портале Sharepoint. (Так как это, по-видимому, «по замыслу», кто-нибудь может сказать, что дизайн противоречив?)

  2. Если требуется редактирование результатов, возможно, вы можете сделать запрос типа «Дерево рабочих элементов» .

  3. Используйте TFS SDK для правильного создания документа Excel. Я провел некоторое исследование с этим, и это выполнимо, но так как нам нужно было только просмотр, # 1 достаточно. Создание созданного документа для редактирования может занять некоторое время.

PS - Я могу подтвердить, что я пытался экспортировать элементы дерева работ, чтобы преуспеть, и это сохраняет структуру ссылок в такте. Также см. Эту статью MSDN о том, как это сделать http://msdn.microsoft.com/en-us/library/dd286627.aspx

Но если вы хотите, чтобы вы могли использовать TFS API, я добавляю псевдокод ниже, 1. Используйте Open XML SDK 2.0 для Microsoft Office, чтобы подключиться к большому Excel и прочитать его http://msdn.microsoft.com/en-us/library/gg575571.aspx 2. Используйте API TFS для программного создания рабочих элементов 3. Создать ссылки между рабочими элементами http://blogs.microsoft.co.il/blogs/shair/archive/2010/02/27/tfs-api-part-22-create-link-between-work-item-parent-child-etc.aspx

private void ReadInformationFromExcelAndCreateLinkWorkItems()
    {
        using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(@"FilePath\fileName", false))
        {
            WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
            WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
            SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
            string text;
            int WorkItemId = 0;
            foreach (Row r in sheetData.Elements<Row>())
            {
                foreach (Cell c in r.Elements<Cell>())
                {
                    // Loop through each row till you complete one logical block of work item Links.
                    var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("TfsUrl"));
                    var wiStore = tfs.GetService<WorkItemStore>();

                    WorkItem wi = new WorkItem(new WorkItemType // Create a new work item of the type as in your excel)
                    // associate all column cell values to the work item
                    wi.Save(); 
                    // This should give you an ID now
                    WorkItemId = wi.Id;

                }
            }
        }
    }

НТН Приветствия, Тарун

...