Integrace modelů pomocí sady Visual Studio ModelBus
Visual Studio ModelBus poskytuje metodu pro vytváření propojení mezi modely a z jiných nástrojů do modelů. Můžete například propojit modely jazyka DSL (Domain-Specific Language) a modely UML. Můžete vytvořit integrovanou sadu seznamů DSLS.
Upozorňující
Rozšíření Visual Studio ModelBus popsané v tomto článku už není k dispozici ke stažení. Tyto pokyny ale stále fungují pro uživatele, kteří už mají toto rozšíření nainstalované.
ModelBus umožňuje vytvořit jedinečný odkaz na model nebo na konkrétní prvek uvnitř modelu. Tento odkaz lze uložit mimo model, například v elementu v jiném modelu. Když později nástroj chce získat přístup k prvku, infrastruktura ModelBus načte příslušný model a vrátí prvek. Pokud chcete, můžete model uživateli zobrazit. Pokud soubor není přístupný v předchozím umístění, ModelBus požádá uživatele, aby ho našel. Pokud uživatel soubor najde, modelBus aktualizuje všechny odkazy na tento soubor.
Poznámka:
V aktuální implementaci modelu ModelBus sady Visual Studio musí být propojené modely položkami ve stejném řešení sady Visual Studio.
Další informace o rozšíření ModelBus najdete v následujících zdrojích informací:
Poznámka:
Komponenta Transformace textové šablony se automaticky nainstaluje jako součást sady funkcí vývoje rozšíření sady Visual Studio. Můžete ho také nainstalovat z karty Jednotlivé komponenty Instalační program pro Visual Studio v kategorii sad SDK, knihoven a architektur. Nainstalujte komponentu Modeling SDK z karty Jednotlivé komponenty .
Poskytnutí přístupu k DSL
Než budete moci vytvořit odkazy ModelBus na model nebo jeho prvky, definujte ModelBusAdapter pro DSL. Nejjednodušší způsob, jak ho definovat, je použít rozšíření Visual Studio ModelBus, které přidává příkazy do Návrháře DSL.
Zveřejnění definice DSL pro ModelBus
Otevřete definiční soubor DSL. Klikněte pravým tlačítkem myši na návrhovou plochu a pak vyberte Povolit ModelBus.
V dialogovém okně zvolte , že chci zveřejnit tuto DSL modelbusu. Obě možnosti můžete zvolit, pokud chcete, aby tento DSL zpřístupnil své modely a aby spotřebovávat odkazy na jiné seznamy DSLS.
Vyberte OK. Do řešení DSL se přidá nový projekt
ModelBusAdapter
.Pokud chcete získat přístup k DSL z textové šablony, musíte upravit AdapterManager.tt v novém projektu. Tento krok vynecháte, pokud chcete získat přístup k DSL z jiného kódu, jako jsou příkazy a obslužné rutiny událostí. Další informace naleznete v tématu Použití sady Visual Studio ModelBus v textové šabloně.
Změňte základní třídu
AdapterManagerBase
na VsTextTemplatingModelingAdapterManager.Na konec souboru vložte tento atribut před třídu
AdapterManager
:[Microsoft.VisualStudio.Modeling.Integration.HostSpecific(HostName)]
V nuGet Správce balíčků
ModelBusAdapter
projektu přidejte NuGet PackageReference doMicrosoft.VisualStudio.TextTemplating.Modeling
.Pokud chcete získat přístup k DSL z textových šablon i z jiného kódu, potřebujete dva adaptéry, jeden upravený a jeden nezměněný.
Vyberte Transformovat všechny šablony.
Znovu sestavte řešení.
ModelBus teď může otevírat instance tohoto DSL.
Složka ModelBusAdapers\bin* obsahuje sestavení sestavená projektem
Dsl
a projektemModelBusAdapters
. Chcete-li odkazovat na tento DSL z jiného DSL, importujte tato sestavení.
Ujistěte se, že na prvky lze odkazovat.
Adaptéry Visual Studio ModelBus ve výchozím nastavení používají identifikátor GUID elementu k jeho identifikaci. Tyto identifikátory musí být trvalé v souboru modelu.
Pokud chcete zajistit zachování ID elementů:
Otevřete DslDefinition.dsl.
V DSL Explorer rozbalte xml serializace Chování a potom třídy Data.
Pro každou třídu, na kterou chcete vytvořit odkazy ModelBus:
Vyberte uzel třídy a v okně Vlastnosti se ujistěte, že serializace ID je nastavena na
true
.
Pokud chcete k identifikaci prvků místo identifikátorů GUID použít názvy prvků, můžete také přepsat části vygenerovaných adaptérů. Přepište následující metody ve třídě adaptéru:
- Přepsání
GetElementId
vrátí identifikátor, který chcete použít. Tato metoda se volá při vytváření odkazů. - Přepsání
ResolveElementReference
pro vyhledání správného prvku z odkazu ModelBus.
Přístup k DSL z jiného DSL
Odkazy ModelBus můžete uložit do vlastnosti domény v DSL a psát vlastní kód, který je používá. Uživatele můžete také nechat vytvořit odkaz ModelBus výběrem souboru modelu a elementu v něm.
Pokud chcete, aby DSL používal odkazy na jinou DSL, měli byste ho nejprve nastavit jako příjemce odkazů na sběrnici modelu.
Povolení využívání odkazů na vystavenou dsl
V diagramu definice DSL klikněte pravým tlačítkem myši na hlavní část diagramu a pak vyberte Povolit ModelBus.
V dialogovém okně vyberte , že chcete povolit, aby tento model spotřebovávat odkazy na sběrnici modelu.
Dsl
V projektu využívání DSL přidejte do odkazů na projekt následující sestavení. Tato sestavení (.dll soubory) jsou v adresáři ModelBusAdapter\bin\* vystaveného DSL.Vystavené sestavení DSL, například Fabrikam.FamilyTree.Dsl.dll
Vystavené sestavení adaptéru sběrnice modelu, například Fabrikam.FamilyTree.ModelBusAdapter.dll
Přidejte následující sestavení .NET do odkazů na projekt využívající projekt DSL.
- Microsoft.VisualStudio.Modeling.Sdk.Integration.dll
- Microsoft.VisualStudio.Modeling.Sdk.Integration.Shell.dll
Uložení ModelBusReference ve vlastnosti domény
V definici DSL spotřebovávatel DSL přidejte vlastnost domény do třídy domény a nastavte její název.
V okně Vlastnosti s vybranou vlastností domény nastavte typ na
ModelBusReference
.V této fázi může kód programu nastavit hodnotu vlastnosti. Hodnota je v okně Vlastnosti jen pro čtení.
Uživatelům můžete povolit nastavení vlastnosti pomocí specializovaného editoru ModelBusReference. Existují dvě verze tohoto editoru nebo nástroje pro výběr. Jeden umožňuje uživatelům zvolit soubor modelu a druhý umožňuje uživatelům zvolit soubor modelu a prvek v modelu.
Povolení, aby uživatel nastavil ModelBusReference ve vlastnosti domény
Klikněte pravým tlačítkem myši na vlastnost domény a pak vyberte Upravit vlastnosti specifické pro ModelBusReference. Otevře se dialogové okno Pro výběr sběrnice modelu.
Nastavte odpovídající typ ModelBusReference na model nebo na prvek uvnitř modelu.
V řetězci filtru dialogového okna souboru zadejte řetězec, například
Family Tree files |*.ftree
. Nahraďte příponu vašeho vystaveného DSL.Pokud jste se rozhodli odkazovat na prvek v modelu, můžete přidat seznam typů, které uživatel může vybrat, například
Company.FamilyTree.Person
.Vyberte OK a potom na panelu nástrojů Průzkumník řešení vyberte Transformovat všechny šablony.
Upozorňující
Pokud jste nevybrali platný model nebo entitu, tlačítko OK nemá žádný vliv, i když se může zobrazit jako povolené.
Pokud jste zadali seznam cílových typů, například
Company.FamilyTree.Person
, musíte přidat odkaz na sestavení odkaz na projekt DSL odkazující na knihovnu DLL cílové DSL, například Company.FamilyTree.Dsl.dll.
Otestování ModelBusReference
Sestavte vystavené i spotřebované seznamy DSLS.
Spusťte jeden z seznamů DSLS v experimentálním režimu stisknutím klávesy F5 nebo CTRL+F5.
V projektu ladění v experimentální instanci sady Visual Studio přidejte soubory, které jsou instancemi jednotlivých DSL.
Poznámka:
Visual Studio ModelBus dokáže přeložit pouze odkazy na modely, které jsou položkami ve stejném řešení sady Visual Studio. Nemůžete například vytvořit odkaz na soubor modelu v jiné části systému souborů.
Vytvořte některé prvky a odkazy v instanci vystaveného DSL a uložte ho.
Otevřete instanci využívající DSL a vyberte prvek modelu, který má vlastnost odkazu sběrnice modelu.
V okně Vlastnosti poklikejte na referenční vlastnost sběrnice modelu. Otevře se dialogové okno pro výběr.
Vyberte Procházet a vyberte instanci vystavené DSL.
Pokud jste zadali odkaz na sběrnici modelu specifický pro element, nástroj pro výběr také umožňuje zvolit položku v modelu.
Vytváření odkazů v kódu programu
Pokud chcete uložit odkaz na model nebo prvek uvnitř modelu, vytvořte ModelBusReference
. Existují dva druhy ModelBusReference
: odkazy na model a odkazy na elementy.
Chcete-li vytvořit odkaz na model, potřebujete AdapterManager dsl, jehož model je instance, a název souboru nebo položku projektu sady Visual Studio modelu.
K vytvoření odkazu na element potřebujete adaptér pro soubor modelu a prvek, na který chcete odkazovat.
Poznámka:
Pomocí sady Visual Studio ModelBus můžete vytvářet odkazy pouze na položky ve stejném řešení sady Visual Studio.
Import vystavených sestavení DSL
V projektu využívajícího přidejte odkazy na projekt na DSL a ModelBusAdapter
sestavení vystaveného DSL.
Předpokládejme například, že chcete uložit odkazy ModelBus do prvků MusicLibrary DSL. Odkazy ModelBus odkazují na prvky FamilyTree DSL. V uzlu Reference v Dsl
projektu řešení MusicLibrary přidejte odkazy na následující sestavení:
Fabrikam.FamilyTree.Dsl.dll. Vystavený DSL.
Fabrikam.FamilyTree.ModelBusAdapters.dll adaptér ModelBus vystaveného DSL.
Microsoft.VisualStudio.Modeling.Sdk.Integration
Microsoft.VisualStudio.Modeling.Sdk.Integration.Shell
Tato sestavení lze nalézt v
ModelBusAdapters
projektu vystaveného DSL v části *bin\**.V souboru kódu, ve kterém vytváříte odkazy, 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;
...
Vytvoření odkazu na model
Pokud chcete vytvořit odkaz na model, přejděte k adapterManageru pro vystavený DSL a použijte ho k vytvoření odkazu na model. Můžete zadat cestu k souboru nebo EnvDTE.ProjectItem
.
Z adaptérManageru můžete získat adaptér, který poskytuje přístup k jednotlivým prvkům modelu.
Poznámka:
Adaptér musíte likvidovat, až ho dokončíte. Nejpohodlnější způsob, jak toho dosáhnout, je příkaz using
. 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 později použít modelReference
, můžete ho uložit do vlastnosti domény, která má externí typ ModelBusReference
:
using Transaction t = this.Store.TransactionManager
.BeginTransaction("keep reference"))
{
artist.FamilyTreeReference = modelReference;
t.Commit();
}
Chcete-li uživatelům povolit úpravy této vlastnosti domény, použijte ModelReferenceEditor
jako parametr v atributu Editor
. Další informace naleznete v tématu Povolit uživateli upravit odkaz.
Vytvoření odkazu na prvek
Adaptér, který jste vytvořili pro model, se dá použít k vytváření a překladu odkazů.
// person is an element in the FamilyTree model:
ModelBusReference personReference =
adapter.GetElementReference(person);
Pokud chcete být schopni použít elementReference
později, můžete ji uložit do vlastnosti domény, která má externí typ ModelBusReference
. Pokud chcete uživatelům povolit jeho úpravy, použijte ModelElementReferenceEditor
ho jako parametr v atributu Editor
. Další informace naleznete v tématu Povolit uživateli upravit odkaz.
Řešení odkazů
Pokud máte ( ModelBusReference
MBR), můžete získat model nebo prvek modelu, na který odkazuje. Pokud je prvek prezentován v diagramu nebo jiném zobrazení, můžete otevřít zobrazení a vybrat prvek.
Adaptér můžete vytvořit z MBR. Z adaptéru můžete získat kořen modelu. Můžete také vyřešit soubory MBR, které odkazují na konkrétní prvky 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.
Řešení ModelBusReferences v textové šabloně
DSL, ke kterému chcete získat přístup, musí mít adaptér ModelBus nakonfigurovaný pro přístup pomocí textových šablon. Další informace naleznete v tématu Poskytování přístupu k DSL.
Obvykle přistupujete k cílové DSL pomocí odkazu sběrnice modelu (MBR) uložené ve zdrojovém DSL. Vaše šablona proto obsahuje direktivu zdrojové DSL a kód pro překlad MBR. Další informace o textových šablonách najdete v tématu Generování 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 an 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 najdete v tématu Použití sady Visual Studio ModelBus v textové šabloně.
Serializace ModelBusReference
Pokud chcete uložit ( ModelBusReference
MBR) ve formě řetězce, můžete ho serializovat:
string serialized = modelBus.SerializeReference(elementReference);
// Store it anywhere, then get it back again:
ModelBusReference elementReferenceRestored =
modelBus.DeserializeReference(serialized, null);
MBR, který je serializován tímto způsobem, je nezávislý na kontextu. Pokud používáte jednoduchý souborový adaptér sběrnice modelu, obsahuje MBR absolutní cestu k souboru. Pokud se soubory modelu instance nikdy nepřesouvají, je tato serializace dostatečná. Soubory modelu jsou ale obvykle položky v projektu sady Visual Studio. Vaši uživatelé očekávají, že budou moct přesunout celý projekt do různých částí systému souborů. Očekávají také, že budou mít projekt pod správou zdrojového kódu a otevřít ho na různých počítačích. Názvy cest by proto měly být serializovány vzhledem k umístění projektu, který obsahuje soubory.
Serializace vzhledem k zadané cestě k souboru
A ModelBusReference
obsahuje ReferenceContext
, což je slovník, ve kterém můžete ukládat informace, jako je cesta k souboru vzhledem k tomu, ke kterému by měla být serializována.
Serializace vzhledem k cestě:
elementReference.ReferenceContext.Add(
ModelBusReferencePropertySerializer.FilePathSaveContextKey,
currentProjectFilePath);
string serialized = modelBus.SerializeReference(elementReference);
Načtení odkazu z řetězce:
ReferenceContext context = new ReferenceContext();
context.Add(ModelBusReferencePropertySerializer.FilePathLoadContextKey,
currentProjectFilePath);
ModelBusReference elementReferenceRestored =
modelBus.DeserializeReference(serialized, context);
Odkazy modeluBus vytvořené jinými adaptéry
Následující informace jsou užitečné, pokud chcete vytvořit vlastní adaptér.
A ModelBusReference
(MBR) se skládá ze dvou částí: hlavičky MBR, která je deserializována sběrnici modelu, a adaptérem, který zpracovává konkrétní správce adaptéru. Tento přístup umožňuje poskytnout vlastní formát serializace adaptéru. Můžete například odkazovat na databázi místo souboru nebo můžete do odkazu na adaptér uložit další informace. Vlastní adaptér může umístit další informace do ReferenceContext
souboru .
Při deserializaci MBR, musíte zadat ReferenceContext, který je pak uložen v objektu MBR. Při serializaci MBR se uložený OdkazContext používá adaptér k vygenerování řetězce. Deserializovaný řetězec neobsahuje všechny informace v ReferenceContext. Například v jednoduchém adaptéru založeném na souborech obsahuje ReferenceContext cestu ke kořenovému souboru. Cesta není uložena v serializovaném řetězci MBR.
MBR je deserializován ve dvou fázích:
ModelBusReferencePropertySerializer
je standardní serializátor, který se zabývá hlavičkou MBR. Používá standardní kontejner vlastností DSLSerializationContext
, který je uložen vReferenceContext
klíčiModelBusReferencePropertySerializer.ModelBusLoadContextKey
. ZejménaSerializationContext
by měl obsahovat instanciModelBus
.Adaptér ModelBus se zabývá částí MBR specifické pro adaptér. Může použít další informace uložené v OdkazuContext MBR. Jednoduchý adaptér založený na souborech udržuje kořenové cesty k souborům pomocí klíčů
FilePathLoadContextKey
aFilePathSaveContextKey
.Odkaz na adaptér v souboru modelu je deserializován pouze při jeho použití.
Vytvořit model
Vytvoření, otevření a úprava modelu
Následující fragment pochází z ukázky stavového počítače na webu VMSDK. Ukazuje použití ModelBusReferences k vytvoření a otevření modelu a získání diagramu přidruženého k modelu.
V této ukázce je název cílového DSL StateMachine. Z něj je odvozeno několik názvů, například 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ěření odkazů
BrokenReferenceDetector testuje všechny vlastnosti domény v úložišti, které mohou obsahovat ModelBusReferences. Volá akci, kterou zadáte tam, kde se najde jakákoli akce. Tento test je užitečný pro metody ověřování. Následující metoda ověřování testuje úložiště při pokusu o uložení modelu a hlásí přerušené odkazy v okně chyb:
[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 this ReferenceState instance "
+ "named '{1}' contains reference value '{2}' which is invalid";
Akce prováděné rozšířením ModelBus
Následující informace můžou být užitečné, pokud modelBus používáte v rozsáhlém rozsahu.
Rozšíření ModelBus provede v řešení DSL následující změny.
Když kliknete pravým tlačítkem myši na diagram definice DSL, vyberte Povolit modelbus a pak vyberte Povolit tento DSL využívat ModelBus:
V projektu DSL by se měl přidat odkaz do Microsoft.VisualStudio.Modeling.Sdk.Integration.dll.
V definici DSL je přidán odkaz na externí typ:
Microsoft.VisualStudio.Modeling.Integration.ModelBusReference
.Odkaz můžete zobrazit v Průzkumníku DSL v části Typy domén. Pokud chcete odkazy na externí typ přidat ručně, klikněte pravým tlačítkem myši na kořenový uzel.
Přidá se nový soubor šablony Dsl\GeneratedCode\ModelBusReferencesSerialization.tt.
Když nastavíte typ vlastnosti domény na ModelBusReference, klikněte pravým tlačítkem myši na vlastnost a vyberte Povolit vlastnosti Specifické pro ModelBusReference:
Do vlastnosti domény se přidá několik atributů CLR. Můžete je zobrazit v poli Vlastní atributy v okně Vlastnosti . V dsl\GeneratedCode\DomainClasses.cs můžete zobrazit atributy deklarace 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")]
Když kliknete pravým tlačítkem myši na diagram definice DSL, vyberte Povolit ModelBus a vyberte Zveřejnit tuto DSL modelbusu:
Do řešení se přidá nový projekt
ModelBusAdapter
.Do projektu se přidá
DslPackage
odkazModelBusAdapter
.ModelBusAdapter
obsahuje odkaz naDsl
projekt.V DslPackage\source.extention.tt
|ModelBusAdapter|
se přidá jako součást MEF.