Postup: definovat pracovní položku odkaz
Můžete vytvořit Visual Studio rozšíření integrace, který reaguje, když uživatel vytvoří nebo odstraní propojení mezi prvku modelu UML a pracovní položku.Například uživatel zvolí propojení nové položky práce k prvku modelu, kód nelze inicializovat pole položku z hodnot v modelu.
Nastavit rozšíření řešení UML
To vám umožní rozvíjet obslužné rutiny a distribuovat ostatním uživatelům.Je nutné nastavit dvě Visual Studio projekty:
Projekt knihovny třídy obsahující kód popisovač odkazu.
VSIX projektu, který slouží jako kontejner pro příkaz pro instalaci.Pokud chcete, můžete zahrnout další součásti stejného VSIX.
Nastavit řešení programu Visual Studio
Vytvoření projektu knihovny třídy, přidání k existujícím řešením VSIX, nebo vytváření nových řešení.
Na soubor nabídce zvolte Nový, projektu.
Pod Nainstalované šablony, rozbalte položku Visual C# nebo jazyka Visual Basic, v prostředním sloupci klepněte na Knihovna tříd.
Nastavit roztok označuje, zda chcete vytvořit nové řešení nebo přidání komponenty do VSIX roztoku, který jste již otevřeli.
Nastavíte projekt název a umístění a klepněte na tlačítko OK.
Pokud vaše řešení již obsahuje jeden, vytvořte projekt VSIX.
V Aplikaci Solution Explorer, zvolte v místní nabídce roztoku Přidat, Nový projekt.
Pod Nainstalované šablony, rozbalte položku Visual C# nebo jazyka Visual Basic, vyberte příkaz rozšíření.V prostředním sloupci zvolte VSIX projektu.
Nastavte VSIX projektu jako projektu při spuštění roztoku.
- V aplikaci Solution Explorer v místní nabídce projektu VSIX zvolte nastavit jako spuštění projektu.
V source.extension.vsixmanifestpod obsahu, přidat jako součást MEF projektu knihovny tříd.
Na metadat karta, nastavit název VSIX.
Na Cíle nainstalovat karta, nastavit jako cíle Visual Studio Ultimate a Premium.
Na majetku vyberte Novýa v dialogovém okně nastavit:
Typ = MEF komponenty
Zdroj = projektu v aktuální řešení
Projekt = projektu knihovny třídy
Definování popisovač odkaz pracovní položky
Proveďte všechny následující úkoly v projektu knihovny tříd.
Odkazy na projekt
Přidejte následující .NET sestavení na odkazy 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 -používá ukázkový kód
Pokud nelze nalézt jeden z těchto odkazů pod .NET kartě Přidat odkaz na dialogové okno, pomocí karty Procházet vyhledejte v 11.0\Common7\IDE\PrivateAssemblies\ \Program Files\Microsoft Visual Studio.
Importujte obor názvů pracovní položky
Ve vaší Visual Studio projektu odkazy, přidat odkazy na následující sestavení:
Microsoft.TeamFoundation.WorkItemTracking.Client.dll
Microsoft.VisualStudio.TeamFoundation.WorkItemTracking.dll
Ve svém kódu programu importujte následující obory:
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Uml.Classes;
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
using Microsoft.VisualStudio.TeamFoundation.WorkItemTracking;
using System.Linq;
Definování propojené obslužné rutiny pracovní položky
Přidat soubor třídy do projektu knihovny třídy a takto nastavit její obsah.Změňte obor názvů a třídy názvy do dáte přednost.
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;
}
}
}
Testování popisovač odkazu
Pro testovací účely spusťte v režimu ladění popisovač váš odkaz.
Testování popisovač odkazu
Stiskněte klávesu F5, nebo ladění nabídce zvolte Spustit ladění.
Experimentální instance Visual Studio spustí.
Poradce při potížích s: Pokud je nový Visual Studio nespustí, ověřte, zda VSIX projektu jako projektu při spuštění roztoku.
V experimentální Visual Studio, otevření nebo vytvoření projektu modelování a otevření nebo vytvoření diagramu modelu.
Vytvořit prvek modelu jako třída UML a nastavit jeho název.
Klepněte pravým tlačítkem myši na prvek a potom klepněte na tlačítko Vytvořit pracovní položku.
V podnabídce ukazuje-li Otevřené připojení serveru nadace týmu, klepněte na něj a postupujte podle dialogy pro připojení k serveru.Klepněte znovu pravým tlačítkem myši na prvek modelu a na Vytvořit pracovní položku.
V podnabídce zobrazuje seznam typů pracovních položek, klepněte na jednu.
Otevře se formulář nové položky práce.
Ověřte, zda je název pracovní položky stejné jako prvek modelu, pokud použijete ukázkový kód v předchozí části.Tento příklad ukazuje OnWorkItemCreated() pracoval.
Vyplňte formulář, uložte a zavřete pracovní položku.
Ověřte, zda pracovní položka je nyní zobrazena červeně.Tento příklad ukazuje OnWorkItemLinked() v ukázkovém kódu.
Poradce při potížích s: Pokud jste nespustili metody zpracování, zkontrolujte, zda:
Projekt knihovny třídy je uveden jako součást MEF v obsahu seznam v source.extensions.manifest VSIX projektu.
Správné Export třídy obslužné rutiny a implementuje třída je připojen atribut ILinkedWorkItemExtension.
Parametry všech Import a Export jsou platné atributy.
O zpracování kódu položky práce
Poslouchání nové pracovní položky
OnWorkItemCreatedje volána, když uživatel zvolí k vytvoření nové pracovní položka propojení na prvky modelu.Kód můžete inicializovat pole položku práce.Pracovní položka poté předložen pro uživatele, kteří mohou aktualizovat pole a uložit pracovní položku.Odkaz na prvek modelu se nevytvoří, dokud pracovní položky byly úspěšně uloženy.
public void OnWorkItemCreated(
IEnumerable<IElement> elementsToBeLinked,
IWorkItemDocument workItem)
{
INamedElement namedElement =
elementsToBeLinked.First() as INamedElement;
if (namedElement != null)
workItem.Item.Title = namedElement.Name;
}
Poslouchání pro vytvoření propojení
OnWorkItemLinkedse nazývá po vytvoření propojení.Jmenuje se, zda je odkaz na nové práce nebo existující položky.Je vyvolána jedenkrát pro každou pracovní položku.
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;
}
[!POZNÁMKA]
Chcete-li tento příklad pracovat, musíte přidat odkaz na projekt System.Drawing.dlla importujte obor názvů Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation.Tyto dodatky však nejsou vyžadovány pro jinými implementacemi OnWorkItemLinked.
Poslouchání odebrání odkazu
OnWorkItemRemovedse nazývá po těsně před každý odkaz na položku práce, odstranění.Odstranění prvku modelu budou odebrány všechny jeho odkazy.
public void OnWorkItemRemoved
(IElement element, string serverUri, int workItemId)
{...}
Aktualizace pracovní položky
Obory názvů Team Foundation můžete manipulovat pracovní položku.
Chcete-li použít následující příklad přidáte tyto.NET sestavení projektu odkazy:
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();
}
Přístup k pracovní položku referenční odkazy
Odkazy přístup takto:
//Get:
string linkString = element.GetReference(ReferenceConstants.WorkItem);
// Set:
element.AddReference(ReferenceConstants.WorkItem, linkString, true);
Formát linkString je:
string.Format(@"%{0}\{1}#{1}${2}", tfServer, projectCollection, RepositoryGuid, workItem.Id);
kde:
Identifikátor URI serveru by:
http://tfServer:8080/tfs/projectCollection
Je důležité v případě projectCollection.
RepositoryGuidlze získat z připojení k TFS:
TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory...; RepositoryGuid= tpc.InstanceId;
Další informace naleznete v tématu Jak: referenční řetězce přiřadit prvky modelu.
Viz také
Referenční dokumentace
Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore
Koncepty
Propojení prvků modelu a pracovních položek
Jak: referenční řetězce přiřadit prvky modelu