Porady: definiowanie procedury obsługi łącza elementu roboczego
Można utworzyć Visual Studio rozszerzenie integracji, które reaguje, gdy użytkownik tworzy lub usuwa łącze między elementem modelu UML i elementu roboczego.Na przykład, gdy użytkownik wybierze opcję połączenia nowego elementu roboczego do elementu modelu, kod może zainicjować pola elementów roboczych z wartości w modelu.
Ustaw rozwiązanie rozszerzenia UML
Pozwoli to na opracowanie programów obsługi i przekazanie ich innym użytkownikom.Musisz skonfigurować dwa Visual Studio projekty:
Projekt biblioteki klas zawierający kod obsługi łączy.
Projekt VSIX, który działa jako kontener dla polecenia instalowania.Jeśli chcesz, możesz dodać inne składniki w tym samym VSIX.
Aby ustawić rozwiązanie w programie Visual Studio
Utwórz projekt biblioteki klas, dodając go do istniejącego rozwiązania VSIX albo tworząc nowe rozwiązanie.
W pasku menu wybierz Plik, Nowy, Projekt.
Pod zainstalowane szablony, rozwiń programu Visual C# lub język Visual Basic, a następnie w środkowej kolumnie kliknij Biblioteka klas.
Ustaw Rozwiązanie do wskazania, czy chcesz utworzyć nowe rozwiązanie lub dodać składnik do rozwiązania VSIX, które jest już otwarte.
Ustaw Nazwę i lokalizację projektu i kliknij przycisk OK.
Chyba że rozwiązanie zawiera już jeden, utwórz projekt VSIX.
W Eksploratorze rozwiązań w menu skrótów rozwiązania wybierz Dodaj, Nowy projekt.
Pod zainstalowane szablony, rozwiń program Visual C# lub program Visual Basic, następnie wybierz rozszerzalności.W środkowej kolumnie wybierz Projekt VSIX.
Ustaw projekt VSIX jako projekt startowy rozwiązania.
- W Eksploratorze rozwiązań, w menu skrótów projektu VSIX wybierz Ustaw jako projekt startowy.
W source.extension.vsixmanifest w polu Zawartość dodaj projekt biblioteki klas jako składnik MEF.
W zakładce Metadane ustaw nazwę VSIX.
W zakładce Instaluj obiekty docelowe ustaw program Visual Studio Ultimate i Premium jako obiekty docelowe.
W zakładce Aktywa wybierz polecenie Nowy i w oknie dialogowym ustaw:
Typ = składnik MEF
Źródło = projektu w bieżącym rozwiązaniu
Projekt = Your class library project
Definiowanie obsługi łączy element pracy
Wykonaj wszystkie poniższe zadania w projekcie biblioteki klas.
Odwołania do projektu
Dodaj następujące zestawy .NET do odwołań projektu:
Microsoft.TeamFoundation.WorkItemTracking.Client.dll
Microsoft.VisualStudio.TeamFoundation.WorkItemTracking.dll Microsoft.VisualStudio.Modeling.Sdk.12.0
Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml
Microsoft.VisualStudio.Uml.Interfaces
System.ComponentModel.Composition
System.Drawing używany przez przykładowy kod
Jeśli nie można znaleźć jednego z tych odwołań w karcie .Net okna dialogowego Dodaj odwołanie, użyj karty Przeglądaj, aby go znaleźć w \Program Files\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies\.
Zaimportuj przestrzeń nazw elementu roboczego
W Visual Studio projekcie Odwołania dodaj odwołania do następujących zestawów:
Microsoft.TeamFoundation.WorkItemTracking.Client.dll
Microsoft.VisualStudio.TeamFoundation.WorkItemTracking.dll
W kodzie programu zaimportuj następujące przestrzenie nazw:
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Uml.Classes;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
using Microsoft.VisualStudio.TeamFoundation.WorkItemTracking;
using System.Linq;
Zdefiniuj procedurę obsługi zdarzenia połączonego elementu roboczego
Dodaj plik klasy do projektu biblioteki klas i ustaw jego zawartość w następujący sposób.Zmień przestrzeń nazw i nazwę klasy na to co wolisz.
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 łącza
Do celów testowych wykonaj procedurę obsługi łącza w trybie debugowania.
Testowanie obsługi łącza
Naciśnij klawisz F5 lub w menu Debugowanie zaznacz Rozpocznij debugowanie.
Eksperymentalne wystąpienie Visual Studio rozpoczyna się.
Rozwiązywanie problemów z: Jeśli nowy Visual Studio nie uruchomić się, upewnij się, że projekt VSIX jest ustawiony jako projekt startowy rozwiązania.
W eksperymentalnym Visual Studio, otwórz lub stwórz projektu modelowania i otworzyć lub utworzyć diagram modelowania.
Utwórz element modelu, taki jak klasa UML i ustaw jego nazwę.
Następnie kliknij prawym przyciskiem myszy element modelu i kliknij przycisk Utwórz element roboczy.
Jeśli podmenu zawiera polecenie Otwórz połączenie serwera programu Foundation Team, kliknij go i postępuj zgodnie z komunikatami w oknach dialogowych, aby połączyć się z serwerem.Następnie ponownie kliknij prawym przyciskiem myszy element modelu i kliknij przycisk Utwórz element roboczy.
Jeśli podmenu zawiera listę typów elementów roboczych, kliknij jeden.
Zostanie otwarty formularz nowego elementu roboczego.
Sprawdź, czy tytuł elementu roboczego jest taki sam, jak element modelu, jeśli użyto przykładowego kodu w poprzedniej sekcji.Pokazuje to, że OnWorkItemCreated() pracował.
Wypełnij formularz, zapisz i zamknij element roboczy.
Sprawdź, czy element roboczy jest teraz wyświetlane w kolorze czerwonym.Pokazuje to, OnWorkItemLinked() w przykładowym kodzie.
Rozwiązywanie problemów z: Jeśli nie uruchomiono metody obsługi, sprawdź, czy:
Projekt biblioteki klas jest wymieniony jako składnik MEF listy Zawartość w source.extensions.manifest w projekcie VSIX.
Poprawny Export atrybut jest dołączany do klasy obsługi i wdraża klasy ILinkedWorkItemExtension.
Parametry wszystkich Import i Export atrybuty są prawidłowe.
Informacje o kodzie procedury obsługi elementu roboczego
Nasłuchiwanie nowych elementów roboczych
OnWorkItemCreated jest wywoływane, gdy użytkownik zdecyduje się na utworzenie nowego elementu pracy połączonego z elementami modelu.Twój kod może zainicjować pola elementu roboczego.Element roboczy jest następnie prezentowany użytkownikowi, który może zaktualizować pola i zapisać element roboczy.Łącze do elementu modelu nie zostanie utworzony, dopóki element pracy został pomyślnie zapisany.
public void OnWorkItemCreated(
IEnumerable<IElement> elementsToBeLinked,
IWorkItemDocument workItem)
{
INamedElement namedElement =
elementsToBeLinked.First() as INamedElement;
if (namedElement != null)
workItem.Item.Title = namedElement.Name;
}
Nasłuchiwanie tworzenia łącza
OnWorkItemLinked jest wywołana zaraz po tym jak utworzone jest połączenie.Jest on wywoływany, gdy jest to łącze do nowego elementu roboczego lub istniejącego elementu.Jest on wywoływany raz dla każdego elementu roboczego.
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 ten przykład działał, należy dodać odwołanie projektu do System.Drawing.dll i zaimportować obszar nazw Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation.Jednak te dodatki nie są wymagane dla innych implementacji OnWorkItemLinked.
Nasłuchiwanie usuwania łącza
OnWorkItemRemoved jest wywoływana tylko raz bezpośrednio przed każdym łączem do elementu roboczego, który jest skreślony.Jeśli element modelu zostanie usunięty, wszystkie jego łącza zostaną usunięte.
public void OnWorkItemRemoved
(IElement element, string serverUri, int workItemId)
{...}
Aktualizacja elementu roboczego
Używając przestrzeni nazw Team Foundation, możesz manipulować elementami roboczymi.
Aby użyć następującego przykładu, należy dodać te zestawy .NET 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łań elementu roboczego
Są dostępne następujące łącza:
//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);
gdzie:
Identyfikator URI serwera będzie:
http://tfServer:8080/tfs/projectCollection
Sprawa jest ważna w projectCollection.
RepositoryGuid można otrzymać od połączenia TFS:
TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory...; RepositoryGuid= tpc.InstanceId;
Aby uzyskać więcej informacji na temat odwołań, zobacz Porady: dołączanie ciągów odwołania do elementów modelu.
Zobacz też
Informacje
Koncepcje
Łączenie elementów modeli i elementów pracy
Porady: dołączanie ciągów odwołania do elementów modelu
Porady: definiowanie i instalowanie rozszerzenia modelowania