Začínáme s jazyky specifické pro doménu
Toto téma vysvětluje základní pojmy v definování a použití domény specifické pro jazyk (DSL).
Pokud jste nový DSL, linky, doporučujeme pracovat až DSL Tools Lab, které můžete najít na tomto webu: Visualizaton a modelování SDK
Co můžete dělat s domény specifické pro jazyk?
Domény specifické pro jazyk je notaci, obvykle grafické, který je určen pro určitý účel.Jazyky, jako například UML jsou naopak univerzální.V DSL můžete definovat typy prvek modelu a jejich vztahy a způsob jejich prezentace na obrazovce.
Navržený DSL můžete distribuovat jako součást balíčku rozšíření integrace Visual Studio (VSIX).Práce s DSL v Visual Studio:
Zápis je pouze součástí DSL.Spolu s zápisu VSIX balíček obsahuje nástroje, které mohou uživatelé použít na jejich úpravy a generování materiálu z jejich modelů.
Jedním z hlavních aplikací DSL, linky je generovat kód programu, konfigurační soubory a další artefakty.Zejména ve velkých projektů a řádky produktů, kde bude vytvořen několik variant výrobku, generování mnoha aspektů proměnné z DSL, linky může poskytovat velké zvýšení spolehlivosti a velmi rychlou odpověď na požadavky na změny.
Zbytek tohoto přehledu je názorný postup, který zavádí základní operace vytváření a používání domény specifické pro jazyk v Visual Studio.
Požadavky
Chcete-li definovat DSL, je třeba nainstalovat následující součásti:
Visual Studio |
|
Visual Studio SDK |
|
Visual Studio vizualizaci a modelování SDK |
Vytváření řešení DSL
Chcete-li vytvořit nový jazyk domény specifické pro vytvoření nového Visual Studio řešení pomocí šablony projektu domény specifické pro jazyk.
Vytvořit řešení DSL
V nabídce File (Soubor) přejděte na příkaz New (Nový) a klepněte na příkaz Project (Projekt).
Pod typy projektů, rozbalte Jiné typy projektů uzlu a na rozšíření.
Klepněte na tlačítko Designer domény specifické pro jazyk.
V název zadejte FamilyTree.Klikněte na tlačítko OK.
Domény specifické pro jazyk Průvodce otevře a zobrazí seznam šablon DSL řešení.
Klepněte na každou šablonu, popis,
Šablony jsou užitečné startovací body.Každý z nich obsahuje úplný pracovní DSL, které můžete upravit podle svých potřeb.Obvykle je zvolit nejbližší chcete vytvořit šablonu.
Zvolte tento návod Minimální jazyk šablony.
Zadejte příponu pro vaše DSL v na odpovídající stránku průvodce.Toto je rozšíření, které budou používat soubory obsahující instance vaše DSL.
Vyberte příponu, která není spojena s libovolnou aplikací v počítači nebo v libovolném počítači, kam chcete nainstalovat modem DSL.Například docx a htm by přípony souboru nepřijatelné.
Průvodce zobrazí upozornění, pokud používá rozšíření, které jste zadali jako DSL.Zvažte použití s jinou příponou.Můžete obnovit také vymažte staré experimentální návrháři Visual Studio SDK experimentální instance.Klepněte na tlačítko Start, klepněte na tlačítko Všechny programy, Microsoft Visual Studio 2010 SDK, Nástrojea potom obnovení instance aplikace Microsoft Visual Studio 2010 experimentální.
Zkontrolovat další stránky a klepněte na tlačítko Dokončit.
Řešení je generována, který obsahuje dva projekty.Jsou nazvány Dsl a DslPackage.Diagram soubor otevře je pojmenovaný DslDefinition.dsl.
[!POZNÁMKA]
Většina kódu, který se zobrazí v seznamu složek v dva projekty se generuje z DslDefinition.dsl.Z tohoto důvodu většina k vaší DSL změn v tomto souboru.
Uživatelské rozhraní je nyní podobný následující obrázek.
Tento roztok definuje jazyk domény.Další informace naleznete v tématu Přehled nástroje systému domény specifické pro jazyk uživatelského rozhraní.
Důležité části řešení DSL
Všimněte si následující aspekty nové řešení.
Dsl\DslDefinition.DSL soubor, viz při vytváření řešení DSL.Téměř veškerý kód v roztoku je generován z tohoto souboru, a většina provedené změny definice DSL jsou zde.Další informace naleznete v tématu Práce s Práce s Diagram definice DSL.
DSL projektu tento projekt obsahuje kód, který definuje jazyk specifické pro domény.
Projekt DslPackage tento projekt obsahuje kód, který umožňuje instance DSL otevřít a upravovat v Visual Studio.
Systémem modem DSL
Jakmile jste vytvořili, můžete spustit řešení DSL.Později můžete upravit definici DSL postupně, systémem roztok znovu po každé změně.
Experimentovat s modem DSL
Klepněte na tlačítko Transformace všechny šablony v aplikaci Solution Explorer nástrojů.To obnoví většinu zdrojového kódu z DslDefinition.dsl.
[!POZNÁMKA]
Při každé změně DslDefinition.dsl, musíte klepnout na Transformace všechny šablony před znovu vytvořit řešení.Tento krok můžete automatizovat.Další informace naleznete v tématu Jak automatizovat transformace všechny šablony.
Stiskněte klávesu F5, nebo ladění nabídky, klepněte na tlačítko Spustit ladění.
Modem DSL vytváří a je nainstalována v experimentálních instanci Visual Studio.
Experimentální instance Visual Studio spustí.Experimentální instance trvá jeho nastavení z samostatné podstromu registru, kde Visual Studio rozšíření jsou registrovány pro účely ladění.Normální instance Visual Studio nemají přístup k rozšíření zaregistrován.
Experimentální instance Visual Studio, otevřete soubor modelu s názvem Test z Aplikaci Solution Explorer.
-nebo-
Pravým tlačítkem myši na projekt ladění, přejděte na Přidata klepněte na tlačítko zboží.V Přidat položku vyberte položku soubor, zadejte vaše DSL.
Model soubor se otevře prázdný diagram.
Panel otevře a zobrazí nástroje vhodné pro typ diagramu.
Pomocí nástrojů pro vytvoření tvarů a spojovacích čar v diagramu.
Chcete-li vytvořit obrazce, přetáhněte z nástroj například tvar do diagramu.
Chcete-li spojit dva obrazce, klepněte na nástroj spojnice příklad a první obrazec klepněte na druhý tvar.
Klepněte na popisky, měnit tvary.
Vaše experimentální Visual Studio bude vypadat následovně:
Obsah modelu
Obsah souboru, který je instancí DSL, nazývá modelu.Model obsahuje modeluprvky a odkazy mezi prvky.Určuje, jaké typy prvků modelu DSL definice a odkazy, které mohou existovat v modelu.Například v DSL, vytvořené ze šablony minimální jazyk, je jeden typ prvku modelu a jeden typ propojení.
Definice DSL můžete určit způsob zobrazení modelu diagramu.Můžete použít různé styly tvarů a spojovacích čar.Můžete určit, že některé obrazce zobrazí uvnitř jiných tvarů.
Můžete zobrazit jako stromu modelu Explorer zobrazení modelu při úpravách.Při přidávání obrazců v diagramu prvky modelu se zobrazí také v Průzkumníku.Aplikace explorer lze použít i v případě, že neexistuje žádný diagram.
Nevidíte Explorer ladění instance Visual Studio, zobrazení nabídce přejděte na příkaz Jiné Windowsa klepněte na tlačítko < svůj jazyk >Explorer.
Rozhraní API vaše DSL
Vaše DSL generuje rozhraní API, které umožňuje číst a aktualizovat modely, které jsou instancemi modem DSL.Jedna aplikace rozhraní API je generování textové soubory z modelu.Další informace naleznete v tématu Generování kódu návrhu pomocí šablon Text T4.
V roztoku ladění otevřete soubory šablony s příponou ".tt".Tyto vzorky ukazují, jak lze generovat text z modelů a umožňuje testování rozhraní API vaše DSL.Jeden ze vzorků je napsáno v Visual Basic, ostatní v Visual C#.
Pod každou šablonou soubor je soubor, který generuje.Rozbalte soubor šablony v aplikaci Solution Explorer a vygenerovaný soubor otevřít.
Soubor šablony obsahuje krátký úsek kódu, který obsahuje všechny prvky modelu.
Generovaný soubor obsahuje výsledek.
Při změně souboru modelu se zobrazí odpovídající změny v generované soubory po obnovit soubory.
K opětovnému vytvoření textové soubory po změně souboru modelu
Experimentální instance Visual Studio, uložte soubor modelu.
Ujistěte se, že parametr název souboru v každém souboru .tt odkazuje na soubor modelu, který používáte pro experimenty..Tt soubor uložte.
Klepněte na tlačítko Transformace všechny šablony na panelu nástrojů ve Aplikaci Solution Explorer.
-nebo-
Klepněte pravým tlačítkem myši šablony, které chcete obnovit a klepněte na tlačítko Spustit vlastní nástroje.
Můžete přidat libovolný počet textové soubory šablony do projektu.Každá šablona generuje soubor jeden výsledek.
[!POZNÁMKA]
Při změně definice DSL ukázkový kód šablony text nebude fungovat, pokud jej aktualizovat.
Další informace naleznete v tématu Generování kódu z domény specifické pro jazyk a Zápis kódu nastavit domény specifické pro jazyk.
Přizpůsobení modem DSL
Pokud chcete upravit definici DSL, zavřete experimentální instance a aktualizovat definici v hlavním Visual Studio instance.
[!POZNÁMKA]
Po úpravě definice DSL, může dojít ke ztrátě informací v testu modelů vytvořených pomocí předchozích verzí.Ladění řešení například obsahuje soubor s názvem vzorku, který obsahuje některé tvarů a spojovacích čar.Po spuštění rozvíjet DSL definition nebudou viditelné a budou ztraceny při uložení souboru.
Vaše DSL můžete provádět celou řadu rozšíření.Následující příklady obsahují dojem možností.
Po každé změně Uložit definici DSL, klepněte na tlačítko Transformace všechny šablony v Aplikaci Solution Explorera pak stiskněte klávesu F5 experimentovat s změněné DSL.
Přejmenovat typy a nástroje
Přejmenujte existující třídy domény a vztahy.Například počínaje Dsl definice vytvořené ze šablony minimální jazyk, je nelze provést následující operace přejmenování provádět DSL představují řady stromů.
Přejmenování domény tříd, vztahy a nástroje
V diagramu DslDefinition přejmenujte na FamilyTreeModel ExampleElement osoby, ExampleModel cíle rodiče a děti zdrojů.Klepnutím na každý štítek ji změnit.
Přejmenování prvku a připojovací nástroje.
Klepnutím na kartu v aplikaci Solution Explorer otevřete okno Průzkumníka DSL.Pokud nevidíte, na zobrazení nabídce přejděte na příkaz Jiné Windows a klepněte na tlačítko DSL Explorer.DSL Explorer je viditelné pouze diagram DSL definice aktivního okna.
Otevřete okno Vlastnosti a umístěte jej současně viděli DSL Explorer a vlastnosti.
V aplikaci Explorer DSL, rozbalte položku Editor, Panel karet, < DSL >a potom Nástroje.
Klepněte na ExampleElement.Jedná se o položku sady nástrojů, který se používá k vytvoření prvků.
V okně Vlastnosti změnit název vlastnost osobě.
Všimněte si, že Titulek také změní vlastnost.
Stejným způsobem změňte název nástroje ExampleConnector na ParentLink.Změnit Titulek vlastnosti tak, aby nebyla kopie vlastnost Name.Zadejte například nadřazený odkaz.
Znovu sestavit modem DSL.
Uložte soubor definice DSL.
Klepněte na tlačítko Transformace všechny šablony v panelu Průzkumník řešení
Stisknutím klávesy F5.Počkejte, dokud experimentální instance Visual Studio se zobrazí.
V roztoku ladění v experimentálních instance Visual Studio, otevřete soubor modelu test.Lze přetáhnout prvky ji z panelu nástrojů.Všimněte si, že nástroj titulky a názvy typu DSL Explorer změnily.
Uložte soubor modelu.
Otevřete soubor .tt a nahradit výskyty staré názvy typu a vlastností nové názvy.
Ujistěte se, že Určuje název souboru, který je zadán v souboru .tt zkušební model.
.Tt soubor uložte.Zobrazí výsledek spuštění kódu v souboru .tt vygenerovaný soubor otevřete.Ověřte, zda je správný.
Přidat vlastnosti domény do tříd
Přidáte vlastnosti třídy domény, například představují let od narození a smrti osoby.
Chcete-li zobrazit vlastnosti nového diagramu, je nutné přidat sklenářské tvaru, který zobrazuje prvek modelu.Také je třeba namapovat vlastnosti sklenářské.
Přidání vlastností a jejich zobrazení
Přidáte vlastnosti.
V definici DSL diagramu klepněte pravým tlačítkem myši třídy uživatele domény, přejděte na Přidata klepněte na tlačítko Vlastnost Domain.
Zadejte seznam nové názvy vlastností, jako je například narození a smrti.Stiskněte klávesu Enter po každém z nich.
Přidáte sklenářské, které vlastnosti se zobrazí v obrazci.
Podle šedou čáru, která z domény třídy osoby na druhou stranu diagramu.Toto je mapa prvku diagramu.Obrazec Třída ní odkazy třídy domény.
Pravým tlačítkem myši na obrazec třídy, přejděte na Přidata klepněte na tlačítko Text Decorator.
Přidáte dvě sklenářské s názvy BirthDecorator a DeathDecorator.
Vyberte každou novou decorator a v okně vlastnosti nastavena pozice pole.Určuje, kde hodnota vlastnosti domény se zobrazí v obrazci.Například InnerBottomLeft a InnerBottomRight.
Mapovat sklenářské vlastnosti.
Otevřete okno podrobností DSL.Obvykle je v kartě vedle v okně výstupu.Pokud nevidíte, na zobrazení nabídce přejděte na Jiné Windowsa klepněte na tlačítko Podrobnosti DSL.
DSL definice diagramu klepněte na řádek, třídy uživatele domény připojí k obrazci třídy.
V Podrobnosti DSL, Mapy Decorator karta, klepněte na políčko nenamapované decorator.V Vlastností zobrazení, vyberte vlastnost domény, do které chcete mapovat.Například mapovat BirthDecorator narození.
Modem DSL uložit, klepněte na tlačítko Převést všechny šablony a stiskněte klávesu F5.
Ukázkový diagram modelu ověřte, zda lze nyní pozice, kterou jste zvolili klepněte a zadejte hodnoty do nich.Navíc při výběru obrazce osoba zobrazí okno Vlastnosti nové vlastnosti narození a smrti.
V souboru .tt můžete přidat kód, který získá vlastnosti každé osoby.
Definovat nové třídy
Třídy domény a vztahy můžete přidat k modelu.Například můžete vytvořit novou třídu představující měst a nový vztah představovat, že osoba žila ve městě.
Chcete-li odlišné typy v diagramu modelu, můžete mapovat tříd domény různé druhy obrazec nebo obrazce různé geometrie a barvy.
Přidat a zobrazit nové třídy domény
Přidat třídu domény, jako podřízené kořenovému modelu.
V definici DSL diagramu klepněte Vztah vkládání nástroj, klepněte na kořenový třídy FamilyTreeModel a klepněte na prázdnou část diagramu.
Nová třída domény zobrazí, připojenou k FamilyTreeModel vkládání vztahu.
Nastavte jeho název, například města.
[!POZNÁMKA]
Každé domény třídy s výjimkou kořenové modelu musí být cíl alespoň jednu relaci vkládání nebo musí dědit ze třídy, která je cílem vkládání.Z tohoto důvodu je často vhodné vytvořit třídu domény pomocí nástroje vkládání vztah.
Přidáte vlastnost domény do nové třídy, například název.
Přidáte odkaz vztah mezi osobou a města.
Klepněte Vztah odkaz nástroj, klepněte na možnost osoby a klepněte na tlačítko města.
[!POZNÁMKA]
Referenční vztahy představují křížové odkazy z jedné části stromu modelu do druhého.
Přidání obrazce představující měst v diagramech modelu.
Přetáhněte Geometrie obrazce z panelu nástrojů do diagramu a přejmenujte jej například TownShape.
V okně Vlastnosti nastavte pole vzhled nového obrazce, jako je například barva výplně a geometrie.
Přidat Decorator zobrazí název městě a přejmenujte jej na NameDecorator.Vlastnost jeho pozici.
Třída domény městě mapovat TownShape.
Klepněte Mapy prvku diagramu nástroj, klepněte na tlačítko třídy domény města a obrazce třídy TownShape.
V Decorator mapy kartě DSL podrobnosti vybrané okno s konektorem mapy, kontrolu NameDecorator a nastavit Vlastností zobrazení názvu.
Vytvoření spojnice k zobrazení vztahů mezi osobou a měst.
Přetáhněte spojnice z panelu nástrojů do diagramu.Přejmenujte jej a nastavte jeho vlastnosti vzhled.
Použití Mapy prvku diagramu nástroj propojení nové spojnice vztah mezi osobou a města.
Prvek nástroj pro vytváření nové městě vytvoříte.
V DSL Explorer, rozbalte položku Editor pak Panel karet.
Pravým tlačítkem myši na < DSL > a klepněte na tlačítko Přidat nový prvek nástroj.
Nastavit název vlastnosti nového nástroje a nastavení jeho třídy vlastnost města.
Nastavit Ikonu panelu nástrojů vlastnost.Click [...] a název souboru vyberte soubor ikony.
Vytvořte spojnice pro vytváření spojení mezi měst a lidé.
Pravým tlačítkem myši na < DSL > a klepněte na tlačítko Přidat nový nástroj spojnice.
Vlastnost název nové nástroje.
V ConnectionBuilder vlastnost, vyberte builder, který obsahuje název města osoba vztah.
Nastavit ikonu panelu nástrojů.
Uložit definici DSL, klepněte na tlačítko Transformace všechny šablonya pak stiskněte klávesu F5.
Experimentální instance Visual Studio, otevřete soubor modelu test.Pomocí nových nástrojů vytvořit měst a vazby mezi měst a osob.Všimněte si, že můžete vytvořit pouze propojení mezi správné typy prvků.
Vytvořte kód, který uvádí města, ve které každá osoba žije.Text šablony jsou jedním z míst, kde lze tento kód spustit.Nelze například změnit existující soubor Sample.tt v roztoku ladění tak, aby obsahoval následující kód:
<#@ template inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation" debug="true" #> <#@ output extension=".txt" #> <#@ FamilyTree processor="FamilyTreeDirectiveProcessor" requires="fileName='Sample.ftree'" #> <# foreach (Person person in this.FamilyTreeModel.People) { #> <#= person.Name #><#if (person.Town != null) {#> of <#= person.Town.Name #> <#}#> <# foreach (Person child in person.Children) { #> <#= child.Name #> <# } } #>
Při uložení souboru *.tt vytvoří pomocný soubor, který obsahuje seznam osob a jejich bydliště.Další informace naleznete v tématu Generování kódu z domény specifické pro jazyk.
Ověření a příkazy
Přidáním ověření omezení nelze rozvíjet dále tato DSL.Tato omezení jsou metody, které můžete definovat, které se ujistěte, že model je ve správném stavu.Například můžete definovat omezení zda, datum narození dítěte je novější než jeho rodičů.Ověření funkce zobrazí upozornění, pokud uživatel DSL pokusí uložit model, který porušuje některá omezení.Další informace naleznete v tématu Ověření domény specifické pro jazyk.
Můžete také definovat příkazy nabídky, které můžete vyvolat uživatele.Příkazy lze upravit modelu.Můžete také pracovat s jinými modely v Visual Studio a s externím prostředkům.Další informace naleznete v tématu Jak: změna standardní příkaz v jazyce specifické pro doménu.
Nasazení DSL
Chcete-li umožnit ostatním uživatelům používat domény specifické pro jazyk, distribuovat Visual Studio soubor rozšíření (VSIX).To je vytvořena při vytváření řešení DSL.
Vyhledejte soubor .vsix do složky bin vašeho řešení.Zkopírujte jej do počítače, který chcete nainstalovat.V tomto počítači poklepejte na soubor VSIX.Modem DSL, které lze použít ve všech instancích Visual Studio v tomto počítači.
Stejný postup můžete použít vlastní počítače nainstalovat modem DSL, takže není nutné použít experimentální instanci Visual Studio.
Další informace naleznete v tématu Zavedení řešení domény specifické pro jazyk.
Odebrání starých experimentální DSL, linky
Pokud jste vytvořili experimentální DSL, linky, nepotřebujete, můžete je odebrat z počítače obnovením Visual Studio experimentální instance.
Tímto odeberete z počítače všechny experimentální DSL, linky a další experimentální Visual Studio rozšíření.Jedná se o rozšíření, které byly provedeny v režimu ladění.
Tento postup neodstraní DSL, linky nebo jiné Visual Studio rozšíření, které byly nainstalovány plně spuštěním souboru VSIX.
Obnovení instance experimentální Visual Studio
Klepněte na tlačítko Start, klepněte na tlačítko Všechny programy, Microsoft Visual Studio 2010 SDK, Nástrojea potom obnovení instance aplikace Microsoft Visual Studio 2010 experimentální.
Znovu vytvořit všechny experimentální DSL, linky nebo jiné experimentální Visual Studio rozšíření, které chcete použít.
Viz také
Koncepty
Principy modelů, tříd a vztahy
Jak definovat domény specifické pro jazyk