Freigeben über


Erste Schritte mit domänenspezifischen Sprachen

In diesem Thema werden die grundlegenden Konzepte zum Definieren und Verwenden einer domänenspezifischen Sprache (DSL) erläutert, die mit dem Modeling SDK für Visual Studio erstellt wurde.

Hinweis

Das Textvorlagentransformations-SDK und das Visual Studio Modeling SDK werden automatisch installiert, wenn Sie bestimmte Features von Visual Studio installieren. Weitere Informationen finden Sie in diesem Blogbeitrag.

Wenn Sie noch nicht mit DSLs arbeiten, empfehlen wir Ihnen, über das DSL Tools Lab zu arbeiten, das Sie auf dieser Website finden: Visualization and Modeling SDK

Was können Sie mit einer Domain-Specific Sprache tun?

Eine domänenspezifische Sprache ist eine Notation, in der Regel grafisch, die für einen bestimmten Zweck verwendet werden soll. Im Gegensatz dazu sind Sprachen wie UML universell einsetzbar. In einem DSL können Sie die Typen des Modellelements und deren Beziehungen definieren und wie sie auf dem Bildschirm dargestellt werden.

Wenn Sie ein DSL entworfen haben, können Sie es als Teil eines Visual Studio Integration Extension (VSIX)-Pakets verteilen. Benutzer arbeiten mit dem DSL in Visual Studio:

Familienstrukturdiagramm, Toolbox und Explorer

Die Notation ist nur Teil eines DSL. Zusammen mit der Notation enthält Ihr VSIX-Paket Tools, die Benutzer anwenden können, um sie beim Bearbeiten und Generieren von Material aus ihren Modellen zu unterstützen.

Eine der wichtigsten Anwendungen von DSLs besteht darin, Programmcode, Konfigurationsdateien und andere Artefakte zu generieren. Insbesondere in großen Projekten und Produktlinien, bei denen mehrere Varianten eines Produkts erstellt werden, kann die Generierung vieler variabler Aspekte aus DSLs eine große Erhöhung der Zuverlässigkeit und eine sehr schnelle Reaktion auf Anforderungenänderungen bieten.

Der Rest dieser Übersicht ist eine exemplarische Vorgehensweise, in der die grundlegenden Vorgänge zum Erstellen und Verwenden einer domänenspezifischen Sprache in Visual Studio vorgestellt werden.

Voraussetzungen

Um ein DSL zu definieren, müssen Sie die folgenden Komponenten installiert haben:

Komponente Link
Visual Studio http://go.microsoft.com/fwlink/?LinkId=185579
Visual Studio SDK https://go.microsoft.com/fwlink/?linkid=2166172
Modellierungs-SDK für Visual Studio

Hinweis

Die Textvorlagentransformationskomponente wird automatisch als Teil der Visual Studio-Erweiterungsentwicklungsworkloads installiert. Sie können es auch auf der Registerkarte "Einzelne Komponenten " von Visual Studio Installer unter der Kategorie SDKs, Bibliotheken und Frameworks installieren. Installieren Sie die Modellierungs-SDK-Komponente auf der Registerkarte "Einzelne Komponenten ".

Erstellen einer DSL-Lösung

Zum Erstellen einer neuen domänenspezifischen Sprache erstellen Sie eine neue Visual Studio-Projektmappe mithilfe der Projektvorlage für domänenspezifische Sprachen.

  1. Zeigen Sie im Menü "Datei" auf "Neu", und klicken Sie dann auf "Projekt".

  2. Erweitern Sie unter Projekttypen den Knoten "Andere Projekttypen ", und klicken Sie auf "Erweiterbarkeit".

  3. Klicken Sie auf Domain-Specific Language Designer.

    Dialogfeld

  4. Geben Sie im Feld "Name " den Namen "FamilyTree" ein. Klicke auf OK.

    Der Assistent für domänenspezifische Sprachen wird geöffnet und zeigt eine Liste der DSL-Vorlagenlösungen an.

    Klicken Sie auf jede Vorlage, um eine Beschreibung anzuzeigen,

    Die Vorlagen sind hilfreiche Ausgangspunkte. Jeder von ihnen bietet ein komplettes funktionierendes DSL, das Sie entsprechend Ihren Anforderungen bearbeiten können. Normalerweise würden Sie die Vorlage auswählen, die dem am nächsten kommt, was Sie erstellen möchten.

  5. Wählen Sie für diese exemplarische Vorgehensweise die Vorlage " Minimale Sprache " aus.

  6. Geben Sie eine Dateinamenerweiterung für Ihr DSL auf der entsprechenden Assistentenseite ein. Dies ist die Erweiterung, die Dateien mit Instanzen Ihres DSL verwenden werden.

    • Wählen Sie eine Erweiterung aus, die keiner Anwendung auf Ihrem Computer oder auf einem Beliebigen Computer zugeordnet ist, auf dem Sie das DSL installieren möchten. Docx und htm wären beispielsweise inakzeptable Dateinamenerweiterungen.

    • Der Assistent warnt Sie, wenn die eingegebene Erweiterung als DSL verwendet wird. Erwägen Sie die Verwendung einer anderen Dateinamenerweiterung. Sie können auch die Visual Studio SDK Experimental-Instanz zurücksetzen, um alte experimentelle Designer zu löschen. Geben Sie im Windows-StartmenüVisual Studio zurücksetzen ein, und führen Sie dann den Befehl "Microsoft Visual Studio Experimental Instance zurücksetzen" aus, entsprechend Ihrer Version von Visual Studio.

  7. Überprüfen Sie die anderen Seiten, und klicken Sie dann auf "Fertig stellen".

    Eine Lösung wird generiert, die zwei Projekte enthält. Sie heißen Dsl und DslPackage. Eine Diagrammdatei wird geöffnet, die den Namen DslDefinition.dsl hat.

    Hinweis

    Der großteil des Codes, den Sie in den Ordnern in den beiden Projekten sehen können, wird aus DslDefinition.dsl generiert. Aus diesem Grund werden die meisten Änderungen an Ihrem DSL in dieser Datei vorgenommen.

Die Benutzeroberfläche ähnelt nun der folgenden Abbildung.

dsl Designer

Diese Lösung definiert eine domänenspezifische Sprache. Weitere Informationen finden Sie unter Übersicht über die Benutzeroberfläche der domänenspezifischen Sprachwerkzeuge.

Die wichtigen Teile der DSL-Lösung

Beachten Sie die folgenden Aspekte der neuen Lösung:

  • Dsl\DslDefinition.dsl Dies ist die Datei, die beim Erstellen einer DSL-Lösung angezeigt wird. Fast der gesamte Code in der Lösung wird aus dieser Datei generiert, und die meisten Änderungen, die Sie an einer DSL-Definition vornehmen, werden hier vorgenommen. Weitere Informationen finden Sie unter Arbeiten mit dem DSL-Definitionsdiagramm.

  • Dsl-Projekt Dieses Projekt enthält Code, der die domänenspezifische Sprache definiert.

  • DslPackage-Projekt Dieses Projekt enthält Code, mit dem Instanzen des DSL in Visual Studio geöffnet und bearbeitet werden können.

Ausführen des DSL

Sie können die DSL-Lösung ausführen, sobald Sie sie erstellt haben. Später können Sie die DSL-Definition schrittweise ändern und die Lösung nach jeder Änderung erneut ausführen.

So experimentieren Sie mit dem DSL

  1. Klicken Sie auf der Symbolleiste des Projektmappen-Explorers auf "Alle Vorlagen transformieren". Dadurch wird der Großteil des Quellcodes von DslDefinition.dsl neu generiert.

    Hinweis

    Immer wenn Sie DslDefinition.dsl ändern, müssen Sie auf "Alle Vorlagen transformieren " klicken, bevor Sie die Lösung neu erstellen. Dieser Schritt kann automatisiert werden. Weitere Informationen finden Sie unter How to Automate Transform All Templates.

  2. Drücken Sie F5, oder klicken Sie im Menü " Debuggen " auf "Debuggen starten".

    Die DSL wird erstellt und in der experimentellen Instanz von Visual Studio installiert.

    Eine experimentelle Instanz von Visual Studio wird gestartet. Die experimentelle Instanz verwendet ihre Einstellungen aus einer separaten Unterstruktur der Registrierung, in der Visual Studio-Erweiterungen für Debuggingzwecke registriert sind. Normale Instanzen von Visual Studio haben keinen Zugriff auf dort registrierte Erweiterungen.

  3. Öffnen Sie in der experimentellen Instanz von Visual Studio die Modelldatei mit dem Namen "Test " im Projektmappen-Explorer.

    – oder –

    Klicken Sie mit der rechten Maustaste auf das Debugprojekt, zeigen Sie auf "Hinzufügen", und klicken Sie dann auf "Element". Wählen Sie im Dialogfeld "Element hinzufügen " den Dateityp Ihres DSL aus.

    Die Modelldatei wird als leeres Diagramm geöffnet.

    Die Toolbox wird geöffnet und zeigt Tools an, die für den Diagrammtyp geeignet sind.

  4. Verwenden Sie die Tools zum Erstellen von Shapes und Verbindern im Diagramm.

    1. Um Shapes zu erstellen, ziehen Sie aus dem Beispiel-Shape-Tool auf das Diagramm.

    2. Wenn Sie zwei Formen verbinden möchten, klicken Sie auf das Tool "Beispielverbinder", klicken Sie auf die erste Form und dann auf das zweite Shape.

  5. Klicken Sie auf die Beschriftungen der Shapes, um sie zu ändern.

Ihr experimentelles Visual Studio ähnelt dem folgenden Beispiel:

Domänenspezifische Sprachbeispielstruktur in Visual Studio

Der Inhalt eines Modells

Der Inhalt einer Datei, die eine Instanz eines DSL ist, wird als Modell bezeichnet. Das Modell enthält Modellelemente und Verknüpfungen zwischen den Elementen. Die DSL-Definition gibt an, welche Typen von Modellelementen und Verknüpfungen im Modell vorhanden sein können. Beispielsweise gibt es in einem DSL, das aus der Vorlage "Minimale Sprache" erstellt wurde, einen Typ von Modellelement und einen Linktyp.

Die DSL-Definition kann angeben, wie das Modell in einem Diagramm angezeigt wird. Sie können aus einer Vielzahl von Formen und Verbindern auswählen. Sie können angeben, dass einige Formen in anderen Formen angezeigt werden.

Sie können ein Modell als Struktur in der Explorer-Ansicht anzeigen, während Sie ein Modell bearbeiten. Wenn Sie dem Diagramm Shapes hinzufügen, werden die Modellelemente auch im Explorer angezeigt. Der Explorer kann auch dann verwendet werden, wenn kein Diagramm vorhanden ist.

Wenn der Explorer in der Debuginstanz von Visual Studio nicht angezeigt wird, wählen Sie im Menü Ansicht den Eintrag Andere Fenster aus, und klicken Sie dann auf <Sprach>Explorer.

Die API Ihres DSL

Ihr DSL generiert eine API, mit der Sie Modelle lesen und aktualisieren können, die Instanzen des DSL sind. Eine Anwendung der API besteht darin, Textdateien aus einem Modell zu generieren. Weitere Informationen finden Sie unter Design-Time Codegenerierung mithilfe von T4-Textvorlagen.

Öffnen Sie in der Debuglösung die Vorlagendateien mit der Erweiterung ".tt". In diesen Beispielen wird veranschaulicht, wie Sie Text aus Modellen generieren können, und sie ermöglichen es Ihnen, die API Ihres DSL zu testen. Eines der Beispiele wird in Visual Basic geschrieben, der andere in Visual C#.

Unter jeder Vorlagendatei befindet sich die Datei, die generiert wird. Erweitern Sie die Vorlagendatei im Projektmappen-Explorer, und öffnen Sie die generierte Datei.

Die Vorlagendatei enthält ein kurzes Codesegment, das alle Elemente im Modell auflistet.

Die generierte Datei enthält das Ergebnis.

Wenn Sie eine Modelldatei ändern, werden die entsprechenden Änderungen in generierten Dateien angezeigt, nachdem Sie die Dateien neu erstellt haben.

So generieren Sie Textdateien nach dem Ändern der Modelldatei neu

  1. Speichern Sie die Modelldatei in der experimentellen Instanz von Visual Studio.

  2. Stellen Sie sicher, dass der Dateinameparameter in jeder TT-Datei auf die Modelldatei verweist, die Sie für Experimente verwenden. Speichern Sie die TT-Datei.

  3. Klicken Sie auf der Symbolleiste des Projektmappen-Explorers auf "Alle Vorlagen transformieren".

    – oder –

    Klicken Sie mit der rechten Maustaste auf die Vorlagen, die Sie neu generieren möchten, und klicken Sie dann auf "Benutzerdefiniertes Tool ausführen".

Sie können einem Projekt eine beliebige Anzahl von Textvorlagendateien hinzufügen. Jede Vorlage generiert eine Ergebnisdatei.

Hinweis

Wenn Sie die DSL-Definition ändern, funktioniert der Beispieltextvorlagencode nicht, es sei denn, Sie aktualisieren sie.

Weitere Informationen finden Sie unter Generieren von Code aus einer Domain-Specific Sprache und Schreiben von Code zum Anpassen einer Domain-Specific Sprache.

Anpassen des DSL

Wenn Sie die DSL-Definition ändern möchten, schließen Sie die experimentelle Instanz, und aktualisieren Sie die Definition in der Visual Studio-Hauptinstanz.

Hinweis

Nachdem Sie die DSL-Definition geändert haben, verlieren Sie möglicherweise Informationen in den Testmodellen, die Sie mit früheren Versionen erstellt haben. Die Debuglösung enthält z. B. eine Datei mit dem Namen "Sample", die einige Shapes und Connectors enthält. Nachdem Sie mit der Entwicklung Ihrer DSL-Definition begonnen haben, sind sie nicht sichtbar, und sie gehen verloren, wenn Sie die Datei speichern.

Sie können eine Vielzahl von Erweiterungen für Ihr DSL herstellen. Die folgenden Beispiele geben Ihnen einen Eindruck von den Möglichkeiten.

Speichern Sie nach jeder Änderung die DSL-Definition, klicken Sie im Projektmappen-Explorer auf "Alle Vorlagen transformieren", und drücken Sie dann F5, um mit dem geänderten DSL zu experimentieren.

Umbenennen der Typen und Tools

Benennen Sie die vorhandenen Domänenklassen und -beziehungen um. Beispielsweise können Sie ab einer DSL-Definition, die aus der Vorlage "Minimal Language template" erstellt wurde, die folgenden Umbenennungsvorgänge ausführen, um die DSL-Familienstammbäume darzustellen.

So benennen Sie Domänenklassen, Beziehungen und Tools um

  1. Benennen Sie im DslDefinition-Diagramm ExampleModel in FamilyTreeModel, ExampleElement in Person, Targets in Parents und Sources in Children um. Sie können auf jede Bezeichnung klicken, um sie zu ändern.

    DSL-Definitionsdiagramm - Familienbaummodell

  2. Benennen Sie das Element und die Verbindertools um.

    1. Öffnen Sie das DSL Explorer-Fenster, indem Sie im Lösungs-Explorer auf die darunterliegende Registerkarte klicken. Wenn es nicht angezeigt wird, zeigen Sie auf dem Menü "Ansicht" auf "Andere Fenster" und klicken Sie dann auf DSL Explorer. DSL Explorer ist nur sichtbar, wenn das DSL Definition-Diagramm das aktive Fenster ist.

    2. Öffnen Sie das Fenster "Eigenschaften", und positionieren Sie es so, dass Sie DSL-Explorer und -Eigenschaften gleichzeitig sehen können.

    3. Erweitern Sie im DSL-Explorer Editor, Tool-Felder, <Ihre DSL> und dann Tools.

    4. Klicken Sie auf "ExampleElement". Dies ist das Toolboxelement, das zum Erstellen von Elementen verwendet wird.

    5. Ändern Sie im Eigenschaftenfenster die Eigenschaft "Name " in "Person".

      Beachten Sie, dass sich die Caption-Eigenschaft ebenfalls ändert.

    6. Ändern Sie auf die gleiche Weise den Namen des ExampleConnector-Tools in ParentLink. Ändern Sie die Caption-Eigenschaft so, dass sie keine Kopie der Name-Eigenschaft ist. Geben Sie z. B. den übergeordneten Link ein.

  3. Bauen Sie das DSL neu auf.

    1. Speichern Sie die DSL-Definitionsdatei.

    2. Klicken Sie auf der Symbolleiste des Projektmappen-Explorers auf "Alle Vorlagen transformieren ".

    3. Drücken Sie F5. Warten Sie, bis die experimentelle Instanz von Visual Studio angezeigt wird.

  4. Öffnen Sie in der Debuglösung in der experimentellen Instanz von Visual Studio eine Testmodelldatei. Ziehen Sie Elemente aus der Toolbox darauf. Beachten Sie, dass sich die Beschriftungen des Tools und die Typnamen im DSL-Explorer geändert haben.

  5. Speichern Sie die Modelldatei.

  6. Öffnen Sie eine .tt-Datei und ersetzen Sie die Vorkommen des alten Typs und der Eigenschaftsnamen durch die neuen Namen.

  7. Stellen Sie sicher, dass der in der TT-Datei angegebene Dateiname das Testmodell angibt.

  8. Speichern Sie die TT-Datei. Öffnen Sie die generierte Datei, um das Ergebnis der Ausführung des Codes in der TT-Datei anzuzeigen. Stellen Sie sicher, dass sie korrekt ist.

Hinzufügen von Domäneneigenschaften zu Klassen

Fügen Sie einer Domänenklasse Eigenschaften hinzu, z. B. um die Jahre der Geburt und des Todes einer Person darzustellen.

Damit die neuen Eigenschaften im Diagramm sichtbar sind, müssen Sie der Form, die das Modellelement anzeigt, Dekoratoren hinzufügen. Sie müssen die Eigenschaften auch den Dekoratoren zuordnen.

So fügen Sie Eigenschaften hinzu und zeigen sie an
  1. Fügen Sie die Eigenschaften hinzu.

    1. Klicken Sie im DSL-Definitionsdiagramm mit der rechten Maustaste auf die Domänenklasse "Person ", zeigen Sie auf "Hinzufügen", und klicken Sie dann auf "Domain Property".

    2. Geben Sie eine Liste mit neuen Eigenschaftennamen ein, z. B. Geburt und Tod. Drücken Sie die EINGABETASTE nach jedem.

  2. Fügen Sie Dekoratoren hinzu, die die Eigenschaften in der Form anzeigen.

    1. Folgen Sie der grauen Linie, die sich von der Person-Domänenklasse bis zur anderen Seite des Diagramms erstreckt. Dies ist eine Diagrammelementkarte. Sie verknüpft die Domänenklasse mit einer Shape-Klasse.

    2. Klicken Sie mit der rechten Maustaste auf diese Shape-Klasse, zeigen Sie auf "Hinzufügen", und klicken Sie dann auf "Textdekoror".

    3. Fügen Sie zwei Dekoratoren mit Namen wie BirthDecorator und DeathDecorator hinzu.

    4. Wählen Sie jeden neuen Dekorateur aus, und legen Sie im Eigenschaftenfenster das Feld "Position " fest. Dadurch wird bestimmt, wo der Wert der Domäneneigenschaft auf der Form angezeigt wird. Legen Sie beispielsweise "InnerBottomLeft" und "InnerBottomRight" fest.

      Definition der Kompartimentform

  3. Ordnen Sie die Dekoratoren den Eigenschaften zu.

    1. Öffnen Sie das DSL-Detailfenster. Sie befindet sich in der Regel auf einer Registerkarte neben dem Ausgabefenster. Wenn Sie sie nicht sehen, zeigen Sie im Menü Ansicht auf Andere Fenster und klicken Sie dann auf DSL-Details.

    2. Klicken Sie im DSL-Definitionsdiagramm auf die Linie, die die Person-Domänenklasse mit der Shape-Klasse verbindet.

    3. Klicken Sie in DSL-Details auf der Registerkarte Dekorateurkarten auf das Kontrollkästchen eines nicht zugeordneten Dekorators. Wählen Sie in der Anzeigeeigenschaft die Domäneneigenschaft aus, der sie zugeordnet werden soll. Ordnen Sie beispielsweise „BirthDecorator“„Birth“ zu.

  4. Speichern Sie das DSL, klicken Sie auf "Alle Vorlagen transformieren", und drücken Sie F5.

  5. Stellen Sie in einem Beispielmodelldiagramm sicher, dass Sie jetzt auf die von Ihnen ausgewählten Positionen klicken und Werte eingeben können. Wenn Sie eine Person-Form auswählen, zeigt das Eigenschaftenfenster die neuen Eigenschaften "Geburt" und "Tod" an.

  6. In einer TT-Datei können Sie Code hinzufügen, der die Eigenschaften jeder Person abruft.

    Familienstrukturdiagramm, Toolbox und Explorer

Neue Klassen definieren

Sie können einem Modell Domänenklassen und Beziehungen hinzufügen. Sie können beispielsweise eine neue Klasse erstellen, um Städte darzustellen, und eine neue Beziehung, die darstellt, dass eine Person in einer Stadt lebte.

Um die verschiedenen Typen in einem Modelldiagramm voneinander unterscheiden zu können, können Sie die Domänenklassen verschiedenen Formenarten oder Shapes mit unterschiedlicher Geometrie und Farben zuordnen.

So fügen Sie eine neue Domänenklasse hinzu und zeigen sie an
  1. Fügen Sie eine Domänenklasse hinzu, und legen Sie sie als untergeordnetes Element des Modellstamms fest.

    1. Klicken Sie im DSL-Definitionsdiagramm auf das Tool "Embedding Relationship", klicken Sie auf die Stammklasse FamilyTreeModel und dann in einen leeren Teil des Diagramms.

      Es wird eine neue Domänenklasse angezeigt, die mit dem FamilyTreeModel mit einer Einbettungsbeziehung verbunden ist.

      Legen Sie den Namen fest, z. B. Town.

      Hinweis

      Jede Domänenklasse außer dem Stamm des Modells muss das Ziel mindestens einer Einbettungsbeziehung sein, oder sie muss von einer Klasse erben, die das Ziel einer Einbettung ist. Aus diesem Grund ist es häufig praktisch, mithilfe des Tools "Beziehung einbetten" eine Domänenklasse zu erstellen.

    2. Fügen Sie der neuen Klasse eine Domäneneigenschaft hinzu, z. B. Name.

  2. Fügen Sie eine Bezugsbeziehung zwischen Person und Ort hinzu.

    1. Klicken Sie auf das Tool "Referenzbeziehung" , klicken Sie auf "Person" und dann auf "Ort".

      DSL-Definitionsfragment: Wurzel des Familienstammbaums

      Hinweis

      Referenzbeziehungen stellen Querverweise von einem Teil der Modellstruktur auf einen anderen dar.

  3. Fügen Sie ein Shape hinzu, um Städte in den Modelldiagrammen darzustellen.

    1. Ziehen Sie ein Geometrie-Shape aus der Toolbox in das Diagramm, und benennen Sie es um, z. B. TownShape.

    2. Legen Sie im Eigenschaftenfenster die Felder "Darstellung" der neuen Form fest, z. B. Füllfarbe und Geometrie.

    3. Fügen Sie einen Dekorator hinzu, um den Namen der Stadt anzuzeigen, und benennen Sie ihn "NameDecorator" um. Legen Sie die Position-Eigenschaft fest.

  4. Ordnen Sie die Domänenklasse Town der TownShape zu.

    1. Klicken Sie auf das Diagrammelement-Zuordnungstool, dann auf die Domänenklasse Town und anschließend auf die Formklasse TownShape.

    2. Überprüfen Sie auf der Registerkarte „Decorator Maps“ des DSL-Detailfensters bei ausgewähltem Kartenverbinder das Kontrollkästchen „NameDecorator“ und legen Sie die Anzeigen-Eigenschaft auf „Name“ fest.

  5. Erstellen Sie einen Verbinder, um die Beziehung zwischen Person und Städten anzuzeigen.

    1. Ziehen Sie einen Verbinder aus der Toolbox in das Diagramm. Benennen Sie es um, und legen Sie dessen Darstellungseigenschaften fest.

    2. Nutzen Sie das Diagrammelement-Zuordnungstool, um den neuen Verbinder mit der Beziehung zwischen Person und Stadt zu verknüpfen.

      Stammbaumdefinition mit hinzugefügter Formzuordnung

  6. Erstellen Sie ein Elementtool zum Erstellen einer neuen Stadt.

    1. Erweitern Sie im DSL-Explorer den Editor und dann die Toolbox-Registerkarten.

    2. Klicken Sie mit der rechten Maustaste auf <Ihr DSL> , und klicken Sie dann auf "Neues Element hinzufügen".

    3. Legen Sie die Name-Eigenschaft des neuen Tools fest, und legen Sie dessen Class-Eigenschaft auf Town fest.

    4. Legen Sie die Toolbox Icon-Eigenschaft fest. Klicken Sie auf [...] und wählen Sie im Feld "Dateiname " eine Symboldatei aus.

  7. Erstellen Sie ein Verbindertool zum Herstellen einer Verbindung zwischen Städten und Menschen.

    1. Klicken Sie mit der rechten Maustaste auf <Ihr DSL> , und klicken Sie dann auf "Neues Verbindertool hinzufügen".

    2. Legen Sie die Name-Eigenschaft des neuen Tools fest.

    3. Wählen Sie in der ConnectionBuilder-Eigenschaft den Builder aus, der den Namen der Person-Town-Beziehung enthält.

    4. Legen Sie das Toolboxsymbol fest.

  8. Speichern Sie die DSL-Definition, klicken Sie auf "Alle Vorlagen transformieren", und drücken Sie dann F5.

  9. Öffnen Sie in der experimentellen Instanz von Visual Studio eine Testmodelldatei. Verwenden Sie die neuen Tools, um Städte und Verbindungen zwischen Städten und Personen zu schaffen. Beachten Sie, dass Sie nur Verknüpfungen zwischen den richtigen Elementtypen erstellen können.

  10. Erstellen Sie Code, der die Stadt auflistet, in der jede Person lebt. Textvorlagen sind eine der Stellen, an denen Sie diesen Code ausführen können. Sie können beispielsweise die vorhandene Sample.tt Datei in der Debuglösung so ändern, dass sie den folgenden Code enthält:

    <#@ 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 #>
    <#
      }
      }
    #>
    
    

    Wenn Sie die Datei *.tt speichern, wird eine untergeordnete Datei erstellt, die die Liste der Personen und ihrer Wohnsitze enthält. Weitere Informationen finden Sie unter Generieren von Code aus einer Domain-Specific Sprache.

Überprüfung und Befehle

Sie könnten dieses DSL weiter entwickeln, indem Sie Validierungseinschränkungen hinzufügen. Bei diesen Einschränkungen handelt es sich um Methoden, die Sie definieren können, um sicherzustellen, dass sich das Modell in einem korrekten Zustand befindet. Beispielsweise könnten Sie eine Einschränkung definieren, um sicherzustellen, dass das Geburtsdatum eines Kindes später als die seiner Eltern ist. Die Überprüfungsfunktion zeigt eine Warnung an, wenn der DSL-Benutzer versucht, ein Modell zu speichern, das eine der Einschränkungen unterbricht. Weitere Informationen finden Sie unter "Überprüfung in einer Domain-Specific Sprache".

Sie können auch Menübefehle definieren, die der Benutzer aufrufen kann. Befehle können das Modell ändern. Sie können auch mit anderen Modellen in Visual Studio und mit externen Ressourcen interagieren. Weitere Informationen finden Sie unter So ändern Sie einen Standardmenübefehl.

Bereitstellen des DSL

Um anderen Benutzern die Verwendung der domänenspezifischen Sprache zu ermöglichen, verteilen Sie eine Visual Studio-Erweiterungsdatei (VSIX). Dies wird erstellt, wenn Sie die DSL-Lösung erstellen.

Suchen Sie die VSIX-Datei im Ordner "bin" Ihrer Lösung. Kopieren Sie es auf den Computer, auf dem Sie es installieren möchten. Doppelklicken Sie auf diesem Computer auf die VSIX-Datei. Das DSL kann in allen Instanzen von Visual Studio auf diesem Computer verwendet werden.

Sie können das gleiche Verfahren verwenden, um das DSL auf Ihrem eigenen Computer zu installieren, damit Sie die experimentelle Instanz von Visual Studio nicht verwenden müssen.

Weitere Informationen finden Sie unter Deploying Domain-Specific Language Solutions.

Entfernen alter experimenteller DSLs

Wenn Sie experimentelle DSLs erstellt haben, die Sie nicht mehr benötigen, können Sie sie von Ihrem Computer entfernen, indem Sie die Visual Studio Experimental-Instanz zurücksetzen.

Dadurch werden alle experimentellen DSLs und andere experimentelle Visual Studio-Erweiterungen von Ihrem Computer entfernt. Dies sind Erweiterungen, die im Debugmodus ausgeführt wurden.

Dieses Verfahren entfernt keine DSLs oder andere Visual Studio-Erweiterungen, die vollständig installiert wurden, indem die VSIX-Datei ausgeführt wird.

So setzen Sie die Visual Studio Experimental-Instanz zurück

  1. Geben Sie im Windows-StartmenüVisual Studio zurücksetzen ein, und führen Sie dann den Befehl "Microsoft Visual Studio Experimental Instance zurücksetzen" aus, entsprechend Ihrer Version von Visual Studio.

  2. Erstellen Sie alle experimentellen DSLs oder andere experimentelle Visual Studio-Erweiterungen neu, die Sie weiterhin verwenden möchten.