Sdílet prostřednictvím


Integrace modelů pomocí Visual Studio Modelbus

Visual StudioModelBus poskytuje metodu pro vytvoření odkazů mezi modely a z dalších nástrojů do modelů.Například můžete propojit modely specifické pro doménu jazyk (DSL) a modely UML.Můžete vytvořit integrovaná sada DSL, linky.

ModelBus vám umožní vytvořit jedinečný odkaz k modelu, nebo na konkrétní element v rámci modelu.Tento odkaz mohou být uloženy mimo modelu, například v elementu v jiného modelu.Pokud při novější příležitosti nástroj chce získat přístup k elementu, bude infrastruktury modelu sběrnice načíst příslušný model a vrátí elementu.Pokud chcete, můžete zobrazit model pro daného uživatele.Je-li do předchozího umístění nelze získat přístup k souboru, ModelBus vyzve uživatele k vyhledání ji.Jestliže uživatel nalezne soubor, ModelBus opraví všechny odkazy na daný soubor.

[!POZNÁMKA]

V aktuálním Visual Studio provádění ModelBus, propojené modely musí být položky ve stejném Visual Studio řešení.

Ukázky kódu a další informace naleznete na adrese:

Zajištění přístupu k linku DSL

Před vytvořením ModelBus odkazy na model nebo jeho prvků, je nutné definovat ModelBusAdapter pro DSL.Nejjednodušší způsob je používat Visual Studio modelu sběrnice rozšíření, které přidáte příkazy Návrhář jazyka domény.

Chcete-li zveřejnit DSL definice do modelu sběrnice

  1. Stáhněte si a nainstalujte rozšíření sběrnice modelu Visual Studio, pokud již byla již nainstalována.Další informace naleznete v tématu pro vizualizaci a modelování SDK.

  2. Otevřete soubor definice DSL.Klikněte pravým tlačítkem myši na návrhovou plochu a potom klikněte na tlačítko povolit Modelbus.

  3. V dialogovém okně, zvolte chcete zveřejnit tento DSL na ModelBus.Obou možností můžete zvolit, pokud chcete, aby tato DSL, chcete-li zveřejnit své modely a používat odkazy na jiné DSL, linky.

  4. Klikněte na tlačítko OK.Nový projekt "ModelBusAdapter" je přidán do řešení DSL.

  5. Pokud chcete získat přístup DSL ze šablony textu, je třeba upravit AdapterManager.tt v novém projektu.Tento krok vynecháte, pokud chcete získat přístup DSL z jiných kódu, například příkazy a obslužných rutin událostí.Další informace naleznete v tématu Použití prvku Visual Studio ModelBus v textové šabloně.

    1. Změnit základní třídy AdapterManagerBase na VsTextTemplatingModelingAdapterManager.

    2. Téměř na konci souboru vložte tento atribut další před třídy AdapterManager:

      [Microsoft.VisualStudio.Modeling.Integration.HostSpecific(HostName)]

    3. V projektu odkazy ModelBusAdapter přidejte Microsoft.VisualStudio.TextTemplating.Modeling.11.0.

    Pokud chcete získat přístup DSL ze šablony text a z dalších kódu, je třeba dva adaptéry, jeden upraveny a jeden bez jakýchkoli úprav.

  6. Klikněte na tlačítko transformace všechny šablony.

  7. Znovu sestavte řešení.

Je nyní možné pro ModelBus Chcete-li otevřít instance této DSL.

Složka ModelBusAdapters\bin\* obsahuje sestavení poskytli další uživatelé jako Dsl projektu a ModelBusAdapters projektu.Chcete-li tato DSL odkazovat z jiného DSL, měli byste importovat tyto sestavení.

A ujistěte se, že se může odkazovat elementy

Visual StudioAdaptéry ModelBus použijte identifikátor guid elementu k identifikaci, ve výchozím nastavení.Tyto identifikátory musí proto možné trvale uložit v souboru modelu.

Chcete-li zajistit, že element jsou trvalé ID

  1. Otevřete DslDefinition.dsl.

  2. V Průzkumníku DSL rozbalte chování serializace Xml, pak Data třídy.

  3. Pro každou třídu, do kterého chcete vytvořit Model sběrnice odkazuje:

    Klikněte na uzel třídy a v okně Vlastnosti, ujistěte se, že serializovat Id je nastavena na true.

Pokud chcete použít k identifikaci elementy namísto identifikátory GUID názvy elementů, Alternativně lze přepsat částí generovaného adaptéry.Přepište následující metody ve třídě adaptéru:

  • Přepsání GetElementId má být vrácen identifikátor, který chcete použít.Tato metoda je volána při vytváření odkazy.

  • Přepsání ResolveElementReference k vyhledání správné element ze sběrnice modelu odkaz.

Přístup k linku DSL z jiného DSL

Můžete ukládat odkazy na sběrnici model vlastnost domény v linku DSL a můžete napsat vlastní kód, který je používá.Můžete také nechat uživatel může vytvořit odkaz na model sběrnice výběrem souboru modelu a element v něm.

Chcete-li povolit DSL použití odkazů na jiné DSL, by měl nejdříve si ho spotřebitele modelu sběrnice odkazů.

Chcete-li povolit DSL začala spotřebovávat odkazy na zveřejněné DSL

  1. V definici DSL diagramu, klikněte pravým tlačítkem hlavní část diagramu a potom klikněte na tlačítko povolit Modelbus.

  2. V dialogovém okně, vyberte možnost chcete povolit tento model začala spotřebovávat odkazy na sběrnici model.

  3. V projektu Dsl náročných DSL přidejte následující sestavení s odkazy na projektu.V adresáři ModelBusAdapter\bin\ * zveřejněné DSL zjistíte tyto sestavení (soubory DLL).

    • Zveřejněné DSL sestavení, např.Fabrikam.FamilyTree.Dsl.dll

    • Sestavení adaptér sběrnice zveřejněné modelu, např.Fabrikam.FamilyTree.ModelBusAdapter.dll

  4. Přidáte následující sestavení .NET s odkazy na projekt náročných DSL projektu.

    1. Microsoft.VisualStudio.Modeling.Sdk.Integration.11.0.dll

    2. Microsoft.VisualStudio.Modeling.Sdk.Integration.Shell.11.0.dll

K uložení odkazu sběrnice modelu ve vlastnosti domény

  1. V definici DSL náročných DSL přidat vlastnost domény pro doménu třídu a nastavit jeho název.

  2. Ve vlastnostech okna, s vlastností domény vybrána, nastavte typu k ModelBusReference.

V tomto okamžiku programového kódu můžete nastavit hodnotu vlastnosti, ale je jen pro čtení v okně Vlastnosti.

Můžete povolit uživatelům nastavit vlastnost s specializovanou editoru odkaz ModelBus.Existují dvě verze tohoto editoru, nebo výběr: jedna umožňuje uživatelům zvolit soubor modelu a druhá umožňuje uživatelům vybrat soubor modelu a element v rámci modelu.

Chcete-li uživateli umožní nastavit odkaz sběrnice modelu v vlastnost domény

  1. Vlastnost domény klikněte pravým tlačítkem myši a potom klikněte na specifické vlastnosti upravit ModelBusReference.Otevře dialogové okno.Toto je výběr sběrnice modelu.

  2. Vyberte odpovídající druh ModelBusReference: Chcete-li model nebo pro element v rámci modelu.

  3. V souboru řetězec filtru dialogové okno, zadejte řetězec Family Tree files |*.ftree.Nahraďte příponu vaše zveřejněné DSL.

  4. Pokud jste zvolili odkazovat na prvek v modelu, můžete přidat seznam typů, které může uživatel vybrat, například Company.FamilyTree.Person.

  5. Klikněte na tlačítko OKa potom klikněte na tlačítko transformace všechny šablony v panelu nástrojů Průzkumníka řešení.

    Poznámka k upozorněníUpozornění

    Pokud jste ještě vybrali platný model nebo subjekt, bude na tlačítko OK nemají žádný vliv, i když může se zobrazit povoleno.

  6. Pokud jste zadali seznam typů cíl, například Company.FamilyTree.Person, pak je nutné přidat odkaz na sestavení do projektu DSL odkazující na knihovnu DLL cíle DSL, například Company.FamilyTree.Dsl.dll

Otestovat odkaz na Model sběrnice

  1. Vytvářejte i zveřejněné a náročné DSL, linky.

  2. Jeden z DSL, linky spouštění v režimu pokusné stisknutím klávesy F5 nebo CTRL + F5.

  3. V projektu ladění v pokusné instance Visual Studio, přidat soubory, které jsou instancemi každý DSL.

    [!POZNÁMKA]

    Visual StudioModelBus lze řešit pouze odkazy na modely, které jsou položky ve stejném Visual Studio řešení.Můžete například nelze vytvořit odkaz na soubor modelu v jiné části systému souborů.

  4. Vytvořit některé elementy a odkazy v instanci aplikace zveřejněné DSL a uložte jej.

  5. Otevřete instance náročných DSL a vyberte prvek modelu, který má vlastnost modelu sběrnice odkazu.

  6. V okně Vlastnosti dvakrát klikněte na odkaz na vlastnost modelu sběrnice.Otevře dialogové okno pro výběr.

  7. Klikněte na tlačítko Procházet a vyberte instanci zveřejněné DSL.

    Pole pro výběr také umožní zvolte položku v modelu, pokud jste zadali specifické pro element druh odkaz sběrnice model.

Vytvoření odkazů v kódu programu

Když chcete uložit odkaz na model nebo element v rámci modelu, můžete vytvořit ModelBusReference.Existují dva typy z ModelBusReference: model odkazy a odkazy na elementu.

Chcete-li vytvořit odkaz na model, je nutné AdapterManager linek, z nichž modelu je instance a název souboru nebo Visual Studio položku projektu modelu.

Chcete-li vytvořit odkaz na element, je nutné adaptér pro soubor modelu a element, který chcete odkazovat na.

[!POZNÁMKA]

S Visual Studio ModelBus, můžete vytvořit odkazy pouze na položky ve stejném Visual Studio řešení.

Importovat zveřejněné sestavení DSL

V náročných projektu přidáte projekt odkazy na sestavení DSL a ModelBusAdapter zveřejněné DSL.

Představte si například, že chcete ukládat odkazy na ModelBus v elementech MusicLibrary DSL.Odkazy na ModelBus bude odkazovat na elementy FamilyTree DSL.V Dsl projektu MusicLibrary řešení, v uzlu odkazy přidat odkazy na následující sestavení:

  • Fabrikam.FamilyTree.Dsl.dll - zveřejněné DSL.

  • Fabrikam.FamilyTree.ModelBusAdapters.dll - ModelBus adaptéru zveřejněné linek.

  • Microsoft.VisualStudio.Modeling.Sdk.Integration.11.0

  • Microsoft.VisualStudio.Modeling.Sdk.Integration.Shell.11.0

Tyto sestavení lze nalézt v ModelBusAdapters projektu zveřejněné DSL v části bin\*.

V souboru kódu, kde bude vytvoření odkazů bude obvykle musíte importovat tyto obory názvů:

// The namespace of the DSL you want to reference:
using Fabrikam.FamilyTree;  // Exposed DSL
using Fabrikam.FamilyTree.ModelBusAdapters;
using Microsoft.VisualStudio.Modeling.Integration;
using System.Linq;
...

Chcete-li vytvořit odkaz na model

Chcete-li vytvořit odkaz na model, získat přístup AdapterManager pro zveřejněné DSL a použít k vytvoření odkazu na model.Je možné zadat buď cestu k souboru, nebo EnvDTE.ProjectItem.

Z AdapterManager můžete získat adaptér, který poskytuje přístup k jednotlivých prvků v modelu.

[!POZNÁMKA]

Adaptér musí mít, po dokončení s ním.Je nejpraktičtější způsob, jak toho lze dosáhnout pomocí using prohlášení.Toto dokládá následující příklad.

// The file path of a model instance of the FamilyTree DSL:
string targetModelFile = "TudorFamilyTree.ftree";
// Get the ModelBus service:
IModelBus modelBus = 
    this.Store.GetService(typeof(SModelBus)) as IModelBus;
// Get an adapterManager for the target DSL:
FamilyTreeAdapterManager manager = 
    (modelbus.GetAdapterManager(FamilyTreeAdapter.AdapterId) 
     as FamilyTreeAdapterManager;
// or: (modelBus.FindAdapterManagers(targetModelFile).First())
// or could provide an EnvDTE.ProjectItem

// Create a reference to the target model:
// NOTE: the target model must be a file in this project.
ModelBusReference modelReference =
     manager.CreateReference(targetModelFile);
// or can use an EnvDTE.ProjectItem instead of the filename

// Get the root element of this model:
using (FamilyTreeAdapter adapter = 
     modelBus.CreateAdapter(modelReference) as FamilyTreeAdapter)
{
  FamilyTree modelRoot = adapter.ModelRoot;
  // Access elements under the root in the usual way:
  foreach (Person p in modelRoot.Persons) {...}
  // You can create adapters for individual elements:
  ModelBusReference elementReference =
     adapter.GetElementReference(person);
  ...
} // Dispose adapter

Pokud chcete, aby mohli používat modelReference později, můžete ukládat v doméně vlastnost, která má externí ModelBusReference:

using Transaction t = this.Store.TransactionManager
    .BeginTransaction("keep reference"))
{
  artist.FamilyTreeReference = modelReference;
  t.Commit();
}

Chcete-li umožnit uživatelům upravit tuto vlastnost domény, použijte ModelReferenceEditor jako parametr v editoru atributu.Další informace naleznete v tématu uživateli umožní upravit odkaz.

Chcete-li vytvořit odkaz na element

Adaptér, který jste vytvořili pro model lze použít k vytvoření a vyřešení odkazů.

// person is an element in the FamilyTree model:
ModelBusReference personReference = 
  adapter.GetElementReference(person);

Pokud chcete, aby mohli používat elementReference později, můžete ukládat v doméně vlastnost, která má externí ModelBusReference.Chcete-li umožnit uživatelům jej upravit, použijte ModelElementReferenceEditor jako parametr v editoru atributu.Další informace naleznete v tématu uživateli umožní upravit odkaz.

Řešení odkazů

Máte-li ModelBusReference (MBR) můžete získat model nebo prvek modelu, na který odkazuje.Pokud v diagramu nebo jiného zobrazení je k dispozici elementu, můžete otevřít zobrazení a vyberte prvek.

Adaptér můžete vytvořit z MBR.Z adaptéru můžete získat kořene modelu.Také můžete vyřešit MBRs, které odkazují na konkrétní elementy v modelu.

using Microsoft.VisualStudio.Modeling.Integration; ...
ModelBusReference elementReference = ...;

// Get the ModelBus service:
IModelBus modelBus = 
    this.Store.GetService(typeof(SModelBus)) as IModelBus;
// Use a model reference or an element reference
// to obtain an adapter for the target model:
using (FamilyTreeAdapter adapter = 
   modelBus.CreateAdapter(elementReference) as FamilyTreeAdapter)
   // or CreateAdapter(modelReference)
{
  // Get the root of the model:
  FamilyTree tree = adapter.ModelRoot;

  // Get a model element:
  MyDomainClass mel =
    adapter.ResolveElementReference<MyDomainClass>(elementReference);
  if (mel != null) {...}

  // Get the diagram or other view, if there is one:
  ModelBusView view = adapter.GetDefaultView();
  if (view != null) 
  {
   view.Open();
   // Display the diagram:
   view.Show(); 
   // Attempt to select the shape that presents the element:
   view.SetSelection(elementReference);
  }
} // Dispose the adapter.

Chcete-li vyřešit ModelBus odkazy v šabloně Text

  1. DSL, kterou chcete získat přístup k musí mít ModelBus adaptéru, který byl nakonfigurován pro přístup k šablonami text.Další informace naleznete v tématu k poskytování přístupu k linku DSL.

  2. Obvykle bude se připojujete cíl DSL pomocí modelu sběrnice odkaz (MBR) uloženy ve zdroji DSL.Šablony proto obsahuje směrnici zdroj DSL plus kódu chcete-li vyřešit hlavní spouštěcí záznam.Další informace o textových šablonách naleznete v tématu Vytváření kódu z jazyka specifického pro doménu.

    <#@ template debug="true" hostspecific="true" 
    inherits="Microsoft.VisualStudio.TextTemplating.Modeling.ModelBusEnabledTextTransformation" #> 
    <#@ SourceDsl processor="SourceDslDirectiveProcessor" requires="fileName='Sample.source'" #>
    <#@ output extension=".txt" #>
    <#@ assembly name = "Microsoft.VisualStudio.Modeling.Sdk.Integration.11.0" #>
    <#@ assembly name = "System.Core" #>
    <#@ assembly name = "Company.CompartmentDragDrop.Dsl.dll" #>
    <#@ assembly name = "Company.CompartmentDragDrop.ModelBusAdapter.dll" #>
    <#@ import namespace="Microsoft.VisualStudio.Modeling.Integration" #>
    <#@ import namespace="System.Linq" #>
    <#@ import namespace="Company.CompartmentDragDrop" #>
    <#@ import namespace="Company.CompartmentDragDrop.ModelBusAdapters" #>
    <# // Get source root from directive processor:
      ExampleModel source = this.ExampleModel; 
      // This DSL has a MBR in its root:
    using (ModelBusAdapter adapter = this.ModelBus.CreateAdapter(source.ModelReference) as ModelBusAdapter) 
      {
      ModelBusAdapterManager manager = this.ModelBus.FindAdapterManagers(this.Host.ResolvePath("Sample.compDD1")).FirstOrDefault();
      ModelBusReference modelReference =
        manager.CreateReference(this.Host.ResolvePath("Sample.compDD1"));
    
      // Get the root element of this model:
      using (CompartmentDragDropAdapter adapter = 
         this.ModelBus.CreateAdapter(modelReference) as CompartmentDragDropAdapter)
      {
        ModelRoot root = adapter.ModelRoot;
    #>
    [[<#= root.Name #>]]
    <#
      }
    #>
    

Další informace a návod naleznete v tématuPoužití prvku Visual Studio ModelBus v textové šabloně

Serializace ModelBusReference

Pokud chcete ukládat ModelBusReference (hlavní spouštěcí záznam) ve formě řetězce, můžete jej serializovat:

string serialized = modelBus.SerializeReference(elementReference);
// Store it anywhere, then get it back again:
ModelBusReference elementReferenceRestored =
    modelBus.DeserializeReference(serialized, null);

Hlavní spouštěcí záznam, který je serializována tímto způsobem je nezávislá kontextu.Pokud používáte jednoduchý adaptéru založená na souborech sběrnice modelu, hlavní spouštěcí záznam obsahuje absolutní cestu k souboru.Toto je dostatečná, pokud se nikdy přesune soubory instance modelu.Nicméně soubory modelu obvykle budou položky v Visual Studio projektu.Vaši uživatelé bude předpokládat, že nebude možné přesunout celý projekt k různým částem systému souborů.Očekávají budou také moci ponechat projekt pod správu zdrojového kódu a otevřete ji na různých počítačích.Názvy cesty by měl být serializován proto umístění projekt, který obsahuje soubory.

Serializace relativní k cestě zadaného souboru

Objekt ModelBusReference obsahuje ReferenceContext, což je slovník, ve kterém můžete ukládat informace, jako je cesta k souboru, který je relativní vzhledem k, který by měl být serializován.

K serializaci relativní cesty:

elementReference.ReferenceContext.Add(
   ModelBusReferencePropertySerializer.FilePathSaveContextKey, 
   currentProjectFilePath);
string serialized = modelBus.SerializeReference(elementReference);

K načtení odkazu z řetězce:

ReferenceContext context = new ReferenceContext();
context.Add(ModelBusReferencePropertySerializer.FilePathLoadContextKey,
    currentProjectFilePath);
ModelBusReference elementReferenceRestored =
    modelBus.DeserializeReference(serialized, context);

ModelBusReferences vytvořené jinými adaptéry

Následující informace je užitečné, pokud chcete vytvořit vlastní adaptéru.

Objekt ModelBusReference (MBR) se skládá ze dvou částí: MBR hlavičky, která je deserializovat pomocí sběrnice modelu, a specifické pro adaptér, který je zpracováván manager konkrétní adaptér.To umožňuje poskytovat vlastní formát serializace adaptéru.Například může odkazovat na databázi, nikoli soubor, nebo může uložení dalších informací v odkaz na adaptéru.Vlastní adaptér mohou nastavovat další informace v ReferenceContext.

Při deserializaci MBR, je nutné zadat ReferenceContext, které jsou pak uloženy v objektu MBR.Při serializaci MBR uložené ReferenceContext se používá adaptérem ke generování řetězce.Deserializovaná řetězec neobsahuje všechny informace ReferenceContext.V jednoduché adaptéru založená na souborech, například ReferenceContext obsahuje kořenová cesta souboru, který není uložen v serializovaného řetězce MBR.

Hlavní spouštěcí záznam je deserializovat ve dvou fázích:

  • ModelBusReferencePropertySerializerje standardní serializátoru, který se zabývá MBR hlavičky.Využívá standardní DSL SerializationContext kontejneru objektů a dat, který je uložen v ReferenceContext pomocí klíče ModelBusReferencePropertySerializer.ModelBusLoadContextKey.Zejména SerializationContext by měl obsahovat instance ModelBus.

  • Adaptér ModelBus se zabývá specifické pro adaptér část hlavní spouštěcí záznam.Další informace uložené v ReferenceContext z hlavní spouštěcí záznam může použít.Jednoduché založená na souborech adaptér zachová kořenové cesty k souborům pomocí klíčů FilePathLoadContextKey a FilePathSaveContextKey.

    Odkaz na adaptéru v souboru modelu je deserializovat pouze v případě, že se používá.

Chcete-li vytvořit Model

Vytvoření, otevření a úpravy modelu

Následující fragment je na webu VMSDK získaných z ukázky stav počítače.Ukazuje použití ModelBusReferences k vytváření a otevírání modelu a získat diagramu přidružených k modelu.

V tomto příkladu je název cílového DSL StateMachine.Několik názvů jsou odvozeny od, jako je název třídy modelu a název ModelBusAdapter.

using Fabrikam.StateMachine.ModelBusAdapters; 
using Microsoft.VisualStudio.Modeling;
using Microsoft.VisualStudio.Modeling.Diagrams;
using Microsoft.VisualStudio.Modeling.Integration;
using Microsoft.VisualStudio.Modeling.Integration.Shell;
using Microsoft.VisualStudio.Modeling.Shell;
...
// Create a new model.
ModelBusReference modelReference = 
   StateMachineAdapterManager    .CreateStateMachineModel(modelName, fileName);
//Keep reference of new model in this model.
using (Transaction t = ...)
{
  myModelElement.ReferenceProperty = modelReference;
  t.Commit();
}
// Get the ModelBus service from Visual Studio.
IModelBus modelBus = Microsoft.VisualStudio.Shell.Package.
    GetGlobalService(typeof(SModelBus)) as IModelBus;
// Get a modelbus adapter on the new model.
ModelBusAdapter modelBusAdapter;
modelBus.TryCreateAdapter(modelReference, 
    this.ServiceProvider, out modelBusAdapter);
using (StateMachineAdapter adapter = 
      modelBusAdapter as StateMachineAdapter)
{
    if (adapter != null)
    {
        // Obtain a Diagram from the adapter.
        Diagram targetDiagram = 
           ((StandardVsModelingDiagramView)
                 adapter.GetDefaultView()
            ).Diagram;

        using (Transaction t = 
             targetDiagram.Store.TransactionManager
                .BeginTransaction("Update diagram"))
        {
            DoUpdates(targetDiagram);
            t.Commit();
        }

        // Display the new diagram.
        adapter.GetDefaultView().Show();
    }
}

Ověřování odkazy

BrokenReferenceDetector testů všechny vlastnosti v úložišti, která může obsahovat ModelBusReferences.Zavolá akci můžete, které poskytují, kde je najít žádnou akci.To je obzvláště užitečná pro metody ověřování.Následující metoda ověření testuje úložiště na pokus o uložení modelu a oznámí přerušené odkazy v okně chyby:

[ValidationMethod(ValidationCategories.Save)]
public void ValidateModelBusReferences(ValidationContext context)
{
  BrokenReferenceDetector.DetectBrokenReferences(this.Store,
    delegate(ModelElement element, // parent of property
             DomainPropertyInfo property, // identifies property
             ModelBusReference reference) // invalid reference
    { 
      context.LogError(string.Format(INVALID_REF_FORMAT, 
             property.Name, 
             referenceState.Name, 
             new ModelBusReferenceTypeConverter().
                 ConvertToInvariantString(reference)), 
         "Reference", 
         element);
      });
}}
private const string INVALID_REF_FORMAT = 
    "The '{0}' domain property of ths ReferenceState instance "
  + "named '{1}' contains reference value '{2}' which is invalid";

Akce prováděné při ModelBus rozšíření

Následující informace není důležité, ale může být užitečné v případě, že jste provedli rozsáhlé využívání ModelBus.

Rozšíření ModelBus provede následující změny ve vašem řešení DSL.

Po klepnutí pravým tlačítkem myši DSL definice diagramu, klepněte na tlačítko povolit Modelbusa potom vyberte povolit toto DSL s potěšením ModelBus:

  • V projektu DSL je přidán odkaz naMicrosoft.VisualStudio.Modeling.Sdk.Integration.11.0.dll

  • V definici DSL je přidán odkaz na typ externího: Microsoft.VisualStudio.Modeling.Integration.ModelBusReference.

    Uvidíte odkaz v DSL Explorerv části typy domén.Chcete-li přidat odkazy na externí ručně, klikněte pravým tlačítkem myši na kořenový uzel.

  • Je přidán nový soubor šablony, Dsl\GeneratedCode\ModelBusReferencesSerialization.tt.

Když nastavit typ vlastnosti domény na ModelBusReference a potom klikněte pravým tlačítkem myši na vlastnost a klikněte na tlačítko specifické vlastnosti povolit ModelBusReference:

  • Několik atributů CLR jsou přidány do vlastnost domény.Uvidíte je do pole vlastních atributů v okně Vlastnosti.V Dsl\GeneratedCode\DomainClasses.cs, můžete zobrazit atributy na deklaraci vlastnosti:

    [System.ComponentModel.TypeConverter(typeof(
    Microsoft.VisualStudio.Modeling.Integration.ModelBusReferenceTypeConverter))]
    [System.ComponentModel.Editor(typeof(
      Microsoft.VisualStudio.Modeling.Integration.Picker
      .ModelReferenceEditor // or ModelElementReferenceEditor
      ), typeof(System.Drawing.Design.UITypeEditor))]
    [Microsoft.VisualStudio.Modeling.Integration.Picker
      .SupplyFileBasedBrowserConfiguration
      ("Choose a model file", "Target model|*.target")]
    

Po klepnutí pravým tlačítkem myši DSL definice diagramu, klepněte na tlačítko povolit ModelBusa vyberte možnost zveřejnit tento DSL na ModelBus:

  • Nový projekt ModelBusAdapter je přidán do řešení.

  • Odkaz na ModelBusAdapter bude přidán do DslPackage projektu.ModelBusAdapterobsahuje odkaz na Dsl projektu.

  • V DslPackage\source.extention.tt, |ModelBusAdapter| je přidán jako součást MEF.

Viz také

Koncepty

Postupy: Otevření modelu ze souboru v kódu programu

Postupy: Integrace modelů UML s jinými modely a nástroji

Postupy: Přidání obslužné rutiny operace přetažení myší

Použití prvku Visual Studio ModelBus v textové šabloně