Domanda

Sviluppiamo alcuni prodotti utilizzando uno strumento di progettazione interno che memorizza le informazioni in file XML. Per fornire una corretta integrazione con TFS, abbiamo anche codificato un provider che tiene traccia, in TFS, delle operazioni di check-in e checkout dagli utenti mentre utilizzano il designer, senza la necessità di interagire con Team Explorer.

Ora il requisito è quello di aggiungere anche il relativo elemento di lavoro al momento del check-in dei file, ho cercato su Google e sfogliato alcuni esempi di SDK ma non sono stato in grado di capire se esiste un modo per mostrare lo stesso modulo di Windows che consente all'utente di associare il codice al workitem dal codice o dobbiamo implementare l'intero modulo di windows dal codice (recuperare e cercare i workitem, associarli, eseguire il check-in e così via). Ogni informazione sarebbe apprezzata perché tra le due soluzioni c'è molta differenza in termini di quanto codice dobbiamo scrivere.

È stato utile?

Soluzione 2

Ho verificato con la consulenza MS e non c'è modo di mostrare la finestra di check-in utilizzata da TFS o l'estensione della shell senza ricorrere a un codice di basso livello che non è davvero sicuro.

Quindi l'unica soluzione possibile è utilizzare l'API TFS per creare un nuovo controllo / progetto C # per imitare la finestra di checkin TFS.

Saluti Massimo

Altri suggerimenti

Ecco del codice per aiutare con l'aggiornamento di workItems. Inoltre, prova [questo link] [1] per ulteriori informazioni.

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top