Sdílet prostřednictvím


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

  1. Vytvoření projektu knihovny třídy, přidání k existujícím řešením VSIX, nebo vytváření nových řešení.

    1. Na soubor nabídce zvolte Nový, projektu.

    2. Pod Nainstalované šablony, rozbalte položku Visual C# nebo jazyka Visual Basic, v prostředním sloupci klepněte na Knihovna tříd.

    3. Nastavit roztok označuje, zda chcete vytvořit nové řešení nebo přidání komponenty do VSIX roztoku, který jste již otevřeli.

    4. Nastavíte projekt název a umístění a klepněte na tlačítko OK.

  2. Pokud vaše řešení již obsahuje jeden, vytvořte projekt VSIX.

    1. V Aplikaci Solution Explorer, zvolte v místní nabídce roztoku Přidat, Nový projekt.

    2. 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.

  3. 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.
  4. V source.extension.vsixmanifestpod obsahu, přidat jako součást MEF projektu knihovny tříd.

    1. Na metadat karta, nastavit název VSIX.

    2. Na Cíle nainstalovat karta, nastavit jako cíle Visual Studio Ultimate a Premium.

    3. 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.

Ee329485.collapse_all(cs-cz,VS.110).gifOdkazy 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.

Ee329485.collapse_all(cs-cz,VS.110).gifImportujte 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;

Ee329485.collapse_all(cs-cz,VS.110).gifDefinová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

  1. 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.

  2. V experimentální Visual Studio, otevření nebo vytvoření projektu modelování a otevření nebo vytvoření diagramu modelu.

  3. Vytvořit prvek modelu jako třída UML a nastavit jeho název.

  4. 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.

  5. 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.

  6. Vyplňte formulář, uložte a zavřete pracovní položku.

  7. 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

Ee329485.collapse_all(cs-cz,VS.110).gifPoslouchá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;
  }

Ee329485.collapse_all(cs-cz,VS.110).gifPoslouchá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.

Ee329485.collapse_all(cs-cz,VS.110).gifPoslouchá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

Postup: definovat a nainstalujte rozšíření modelování

Programování v rozhraní API UML