Udostępnij za pośrednictwem


Jak: Definiowanie obsługi łączy element pracy

Można utworzyć Visual Studio rozszerzenie integracji, która reaguje, gdy użytkownik tworzy lub usuwa łącze między elementu modelu UML i elementu pracy.Na przykład gdy użytkownik wybierze opcję łącze Nowy element pracy do elementu modelu, kod może zainicjować pola elementu pracy z wartościami w modelu.

Konfigurowanie roztwór rozszerzenie UML

Pozwoli to opracowanie programów obsługi i przekazać je innym użytkownikom.Trzeba skonfigurować dwie Visual Studio projektów:

  • Projekt biblioteki klasy zawierające kod obsługi łącze.

  • Projekt VSIX, który działa jako kontener dla polecenia instalowania.Jeśli chcesz, może zawierać inne składniki, w tym samym VSIX.

Aby skonfigurować rozwiązania programu Visual Studio

  1. Tworzenie projektu biblioteki klas, dodanie go do istniejącego rozwiązania VSIX albo tworzenie nowego rozwiązania.

    1. Na pliku menu, wybierz polecenie Nowy, Projekt.

    2. W obszarze Zainstalowane szablony, rozwiń węzeł Visual C# lub języka Visual Basic, w środkowej kolumnie kliknij Biblioteka klas.

    3. Ustaw roztwór , aby wskazać, czy chcesz utworzyć nowe rozwiązanie lub dodać składnik do roztworu VSIX, który został już otwarty.

    4. Ustawianie projektu nazwy i lokalizacji i kliknij przycisk OK.

  2. Chyba że rozwiązanie zawiera już jeden, utworzenie projektu VSIX.

    1. W Solution Explorer, w menu skrótów roztwór, wybierz polecenie Dodaj, Nowy projekt.

    2. W obszarze Zainstalowane szablony, rozwiń węzeł Visual C# lub języka Visual Basic, następnie wybierz polecenie rozszerzalności.W środkowej kolumnie Wybierz Projekt VSIX.

  3. Ustawianie projektu VSIX jako projekt uruchamiania roztworu.

    • W oknie Solution Explorer projektu VSIX, w menu skrótów wybierz polecenie ustawiony jako uruchomienia projektu.
  4. W source.extension.vsixmanifest, pod zawartości, dodać projektu biblioteki klasy jako składnik MEF.

    1. Na metadanych kartę, należy ustawić nazwę VSIX.

    2. Na Zainstalować cele kartę, należy ustawić Visual Studio Ultimate i premii jako cele.

    3. Na aktywów tab, wybierz polecenie Nowy, a w oknie dialogowym Ustaw:

      Typ = MEF składnika

      Źródło = w roztworze bieżącego projektu

      Projekt = projektu biblioteki klas

Definiowanie obsługi łączy element pracy

Wykonać wszystkie poniższe zadania w projekcie biblioteki klas.

Ee329485.collapse_all(pl-pl,VS.110).gifOdwołania do projektu

Dodaje się .NET zespołów do odwołania projektu:

Microsoft.TeamFoundation.WorkItemTracking.Client.dll

Microsoft.VisualStudio.TeamFoundation.WorkItemTracking.dll Microsoft.VisualStudio.Modeling.Sdk.11.0

Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml

Microsoft.VisualStudio.Uml.Interfaces

System.ComponentModel.Composition

System.Drawing -używane przez przykładowy kod

Jeśli nie można znaleźć jednego z tych odniesień, pod .NET na karcie Dodaj odwołanie okno dialogowe, użyj karty Przeglądaj, aby go znaleźć w folderze \Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\.

Ee329485.collapse_all(pl-pl,VS.110).gifZaimportować obszar nazw elementu pracy

W sieci Visual Studio projekt odniesienia, dodać odwołania do następujących zestawów: 

  • Microsoft.TeamFoundation.WorkItemTracking.Client.dll

  • Microsoft.VisualStudio.TeamFoundation.WorkItemTracking.dll

W kodzie programu przywóz następujących nazw:

using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Uml.Classes;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
using Microsoft.VisualStudio.TeamFoundation.WorkItemTracking;
using System.Linq;

Ee329485.collapse_all(pl-pl,VS.110).gifDefiniuje połączone obsługi zdarzenia elementu pracy

Dodaj plik klasy do projektu biblioteki klas i ustaw jego zawartość w następujący sposób.Zmienianie nazwy obszaru nazw i klasy niezależnie od preferowanego.

using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Uml.Classes;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation;
using Microsoft.VisualStudio.TeamFoundation.WorkItemTracking;
using System.Linq;


namespace WorkItems
{
  [Export(typeof(ILinkedWorkItemExtension))]
  public class MyWorkItemExtension : ILinkedWorkItemExtension
  {
    // Called before a new work item is edited by the user.
    // Use this to initialize work item fields from the model element.
    public void OnWorkItemCreated(System.Collections.Generic.IEnumerable<IElement> elementsToBeLinked, IWorkItemDocument workItemDocument)
    {
      INamedElement namedElement =
            elementsToBeLinked.First() as INamedElement;
      if (namedElement != null)
        workItemDocument.Item.Title = namedElement.Name;

    }

    // Called when any work item is linked to a model element.
    public void OnWorkItemLinked(System.Collections.Generic.IEnumerable<IElement> elements, string serverUri, int workItemId)
    {
      foreach (IElement element in elements)
        foreach (IShape shape in element.Shapes())
          shape.Color = System.Drawing.Color.Red;
    }

    // Called when a work item is unlinked from a model element.
    public void OnWorkItemRemoved(IElement element, string serverUri, int workItemId)
    {
      foreach (IShape shape in element.Shapes())
        shape.Color = System.Drawing.Color.White;
    }
  }
}

Testowanie obsługi łączy

Do celów badania należy wykonać Twoje łącze obsługi w trybie debugowania.

Aby przetestować łącze programu obsługi

  1. Naciśnij klawisz F5, lub na debugowania menu, wybierz polecenie Start Debugging.

    Wystąpienie doświadczalnych Visual Studio rozpoczyna się.

    Rozwiązywanie problemów z: Jeśli nowy Visual Studio nie start, upewnij się, że projektu VSIX jest ustawiony jako projekt uruchamiania roztworu.

  2. W doświadczalny Visual Studio, otwórz lub Utwórz projekt modelowania i Otwórz lub Utwórz diagram modelowania.

  3. Utwórz element modelu, takie jak klasa UML i ustaw jego nazwę.

  4. Kliknij prawym przyciskiem myszy element, a następnie kliknij przycisk Utworzyć element pracy.

    • Jeśli podmenu pokazuje Otwarte połączenia z serwerem Fundacji zespołu, kliknij je i postępuj zgodnie z okien dialogowych, aby połączyć się z serwerem.Następnie ponownie kliknij prawym przyciskiem myszy element modelu i kliknij przycisk Utworzyć element pracy.

    • Jeśli podmenu zawiera listę typów elementów pracy, kliknij jeden.

      Zostanie otwarty formularz nowego elementu pracy.

  5. Sprawdź, czy nazwa elementu pracy jest taka sama, jak element modelu Jeśli przykładowy kod były używane w poprzedniej sekcji.Pokazuje to OnWorkItemCreated() pracował.

  6. Wypełnij formularz, Zapisz i Zamknij element pracy.

  7. Sprawdź, czy element pracy teraz wyświetlane w kolorze czerwonym.Pokazuje to OnWorkItemLinked() w kodzie przykładowym.

    Rozwiązywanie problemów z: Jeśli nie uruchomiono metody obsługi, sprawdź, czy:

    • Projekt biblioteki klas jest wymieniony jako składnik MEF w zawartości listę w source.extensions.manifest w programie project VSIX.

    • Prawidłowe Export atrybut jest dołączany do klasy obsługi i implementuje klasy ILinkedWorkItemExtension.

    • Parametry wszystkich Import i Export atrybuty są prawidłowe.

Kod obsługi elementu pracy — informacje

Ee329485.collapse_all(pl-pl,VS.110).gifNasłuchiwanie nowe elementy pracy

OnWorkItemCreatedjest wywoływane, gdy użytkownik wybierze opcję Utwórz nowy element pracy być połączone z elementami modelu.Kod można zainicjować pola elementu pracy.Element pracy jest następnie przedstawiana użytkownikowi, który można aktualizować pola i Zapisz element pracy.Łącze do elementu modelu nie jest tworzony, aż element pracy został zapisany.

  public void OnWorkItemCreated(
      IEnumerable<IElement> elementsToBeLinked,
      IWorkItemDocument workItem)
  {
    INamedElement namedElement = 
           elementsToBeLinked.First() as INamedElement;
    if (namedElement != null)
        workItem.Item.Title = namedElement.Name;
  }

Ee329485.collapse_all(pl-pl,VS.110).gifNasłuchiwanie tworzenia łącza

OnWorkItemLinkednazywa się zaraz po utworzeniu łącza.Jest on nazywany, czy łącze do nowego elementu pracy lub istniejący element.Jest ona wywoływana raz dla każdego elementu pracy.

public void OnWorkItemLinked
        (IEnumerable<IElement> elements, 
         string serverUri, // TFS server
         int workItemId)
{
  foreach (IElement element in elements)
    foreach (IShape shape in element.Shapes())
         shape.Color = System.Drawing.Color.Red;
}

[!UWAGA]

Aby w tym przykładzie pracy, należy dodać odwołanie projektu do System.Drawing.dlli zaimportować obszar nazw Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation.Jednak te dodatki nie są wymagane dla innych implementacjach OnWorkItemLinked.

Ee329485.collapse_all(pl-pl,VS.110).gifNasłuchiwanie usunięcie łącza

OnWorkItemRemovednazywa się po tuż przed każdym łącze do elementu pracy, jest usuwany.Usunięcie elementu modelu zostaną usunięte wszystkie jego łącza.

public void OnWorkItemRemoved
         (IElement element, string serverUri, int workItemId)
{...}

Aktualizowanie elementu pracy

Przestrzenie nazw Team Foundation można manipulować elementu pracy.

Aby użyć następującego przykładu, należy dodać te.NET zestawów do odwołania projektu:

  • Microsoft.TeamFoundation.Client.dll

  • Microsoft.TeamFoundation.WorkItemTracking.Client.dll

using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.WorkItemTracking.Client;
...
public void OnWorkItemLinked
        (IEnumerable<IElement> elements, 
         string serverUri, // TFS server
         int workItemId)
{
  TfsTeamProjectCollection tfs =
        TfsTeamProjectCollectionFactory
            .GetTeamProjectCollection(new Uri(serverUri));
  WorkItemStore workItemStore = new WorkItemStore(tfs);
  WorkItem item = workItemStore.GetWorkItem(workItemId);
  item.Open();
  item.Title = "something";
  item.Save();
} 

Uzyskiwanie dostępu do łączy odwołanie elementu pracy

Łącza można dostęp w następujący sposób:

//Get:
string linkString = element.GetReference(ReferenceConstants.WorkItem);
// Set:
element.AddReference(ReferenceConstants.WorkItem, linkString, true);

Format linkString jest:

string.Format(@"%{0}\{1}#{1}${2}", tfServer, projectCollection, RepositoryGuid, workItem.Id);

w przypadku gdy:

  • Identyfikator URI serwera mogą być następujące:

    http://tfServer:8080/tfs/projectCollection

    Sprawa jest ważne w projectCollection.

  • RepositoryGuidmożna otrzymać z połączenia TFS:

    TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory...;
    RepositoryGuid= tpc.InstanceId;
    

Aby uzyskać więcej informacji o odwołaniach, zobacz Jak: dołączanie ciągów odwołania do elementów modelu.

Zobacz też

Informacje

Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore

Koncepcje

Łączenie elementów modeli i elementów pracy

Jak: dołączanie ciągów odwołania do elementów modelu

Jak: definiowanie i zainstalować rozszerzenie modelowania

Programowanie przy użyciu interfejsu API UML