Как показать ассоциированный рабочий элемент из кода? - PullRequest
1 голос
/ 26 октября 2009

Мы разрабатываем некоторый продукт, используя внутренний инструмент проектирования, который хранит информацию в файлах XML. Чтобы обеспечить надлежащую интеграцию с TFS, мы также закодировали поставщика, который отслеживает в TFS операции регистрации и извлечения от пользователей, пока они используют конструктор, без необходимости взаимодействия с Team Explorer.

Теперь требуется добавить также связанный с ним рабочий элемент при проверке файлов, я гуглил и просматривал некоторые образцы SDK, но не смог понять, есть ли способ показать ту же форму окон, которая позволяет пользователю привязать код к рабочему элементу из кода или нам нужно реализовать полную форму окна из кода (извлечь и найти рабочие элементы, связать их, выполнить регистрацию и т. д.). Любая информация будет оценена, потому что между этими двумя решениями существует большая разница в том, сколько кода нам нужно написать.

Ответы [ 2 ]

1 голос
/ 26 октября 2009

Вот некоторый код, который поможет с обновлением workItems. Кроме того, попробуйте [эту ссылку] [1] для получения дополнительной информации.

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;


namespace WorkItemTrackingSample2
{
    class Program
    {
        static void Main(string[] args)
        {
            // Connect to the server and the store.
            TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("YourTfsServerNameHere");
            WorkItemStore workItemStore = (WorkItemStore)tfs.GetService(typeof(WorkItemStore));
            // Get a specific WorkItem from the store.
            //   Replace "12345" with a WorkItem ID appropriate for testing.
            WorkItem workItem = workItemStore.GetWorkItem(12345);

            // Save the existing Priority so we can restore it later.
            int oldPriority = (int)workItem.Fields["Priority"].Value;

            // Set the Priority to an arbitrarily high number.
            workItem.Fields["Priority"].Value = 9999;

            // Display the results of this change.
            if (workItem.IsDirty)
                Console.WriteLine("The workItem has changed, but has not been saved.");

            if (workItem.IsValid() == false)
                Console.WriteLine("The workItem is not valid.");

            if (workItem.Fields["Priority"].IsValid == false)
                Console.WriteLine("The workItem's Priority field is not valid.");

            // Tries to save the invalid WorkItem.
            try
            {
                workItem.Save();
            }
            catch (ValidationException)
            {
                Console.WriteLine("The workItem threw a ValidationException.");
            }

            // Set the priority to a more reasonable number.
            if (oldPriority == 1)
                workItem.Fields["Priority"].Value = 2;
            else
                workItem.Fields["Priority"].Value = 1;

            // If the WorkItem is valid, saves the changed WorkItem.
            if (workItem.IsValid())
            {
                workItem.Save();
                Console.WriteLine("The workItem saved this time.");
            }

            // Restore the WorkItem's Priority to its original value.
            workItem.Fields["Priority"].Value = oldPriority;
            workItem.Save();
        }
    }
}


  [1]: http://msdn.microsoft.com/en-us/library/bb130323(VS.80).aspx
0 голосов
/ 10 июня 2010

Я проверил с MS consultancy, и нет способа показать окно регистрации, используемое TFS или расширением оболочки, не прибегая к низкоуровневому коду, который на самом деле не безопасен.

Таким образом, единственно возможное решение - использовать TFS Api для создания нового элемента управления / проекта C # для имитации окна регистрации TFS.

С уважением Massimo

...