Pergunta

Nós desenvolver algum produto utilizando uma ferramenta de design interno que armazena informações em arquivos XML. Para proporcionar uma integração adequada com TFS nós também codificado um provedor que faixas, no TFS, check-in e operação de saída dos usuários enquanto eles estão usando o designer, sem qualquer necessidade de interagir com o Team Explorer.

Agora, a exigência é para adicionar também o item de trabalho relacionado ao verificar em arquivos, Eu pesquisei ao redor e ler algumas amostras SDK, mas eu não era capaz de entender se existe uma maneira de mostrar a forma mesmas janelas que permitem que o usuário código associado ao item de trabalho a partir do código ou temos de implementar as janelas cheias formar a partir do código (recuperar e workitems procurar, associá-los, realizar o check-in e assim por diante). Qualquer informação seria apreciada porque entre os dois solução existe muita diferença em termos de quantidade de código que precisamos escrever.

Foi útil?

Solução 2

Eu verifiquei com consultoria MS e não há nenhuma maneira de mostrar a janela de check-in usado pela TFS ou a extensão da shell sem recorrer ao código de baixo nível que não é realmente seguro.

Assim, só é possível solução é usar o TFS API para criar um novo C # / controle de projeto para imitar a janela do TFS checkin.

Saudações Massimo

Outras dicas

Aqui está um código para ajudar com WorkItems atualização. Além disso, tente [neste link] [1] para mais informações.

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top