So definieren Sie eine domänenspezifische Sprache
Um eine domänenspezifische Sprache (DSL) zu definieren, erstellen Sie eine Visual Studio Projektmappe aus einer Vorlage.Die wichtige Komponente der Lösung besteht DSL-Definitions das Diagramm, das in DslDefinition.dsl gespeichert wird.Die DSL-Definition definiert die Klassen und Formen des DSL.Nachdem Sie sich auf diesen Elementen hinzufügen und bearbeiten können Sie Programmcode hinzufügen, um das DSL ausführlicher anzupassen.
Wenn Sie DSL vertraut sind, empfiehlt es sich, dass Sie über DSL Tools Labarbeiten, die Sie in dieser Site finden: Visualizaton and Modeling SDK
In diesem Thema
Eine Vorlagen-Projektmappe auswählen
Muster zum Definieren eines DSL
Klassen des Modellelements
Formen im Diagramm
Verweise und Konnektoren
Formen, die Listen enthalten: Depot-Formen
Ports auf der Begrenzung einer anderen Form
Verantwortlichkeitsbereiche
Eigenschaftentypen
Das Anpassen DSL
Problembehandlung
Eine Vorlagen-Projektmappe auswählen
Um ein DSL zu definieren, müssen Sie die folgenden Komponenten installiert sein:
Visual Studio |
|
Visual Studio SDK |
|
Visual Studio-Visualisierung und Modellieren SDK |
Um eine neue domänenspezifische Sprache zu erstellen, erstellen Sie eine neue Visual Studio Projektmappe mithilfe von domänenspezifischen Sprache importieren.
So erstellen Sie eine DSL-Projektmappe
Erstellen Sie eine Projektmappe mit der Domänenspezifische Sprache Vorlage, die im Dialogfeld Neues Projekt unter Andere Projekttypen/Erweiterungen gefunden werden kann.
Wenn Sie auf OKklicken, wird Domänenspezifischer Sprach-Assistent und zeigt eine Liste von Projektmappen der Vorlage DSL an.
Klicken Sie auf jede Vorlage, um die Beschreibung anzuzeigen.Wählen Sie die Projektmappe, die am ehesten entspricht, was Sie erstellen möchten.
Jede DSL DSL-Vorlage definiert eine grundlegende Funktion.Sie bearbeiten das DSL, um zu passen, Anforderungen verfügen.
Klicken Sie auf jedes Beispiel.
Wählen Sie Aufgabenfluss aus, um ein DSL Verantwortlichkeitsbereiche zu erstellen.vertikale oder horizontale Partitionen sind Swimlanes des Diagramms.
Wählen Sie Komponentenmodelle aus, um ein DSL zu erstellen, die Anschlüsse verfügt.Ports sind kleine Formen am Rand einer größeren Form.
Wählen Sie Klassendiagramme aus, um ein DSL zu definieren, das Depot modellieren.Depot von Aufzählungen von Elementen enthalten.
Wählen Sie Minimale Sprache in anderen Fällen oder wenn Sie nicht sicher sind.
Hinweis Wenn Sie ein Klassendiagramm oder ein Komponentendiagramm erstellen möchten, sollten Sie UML-Modelle.Die UML-Modellierungstools stellen einen Satz von Diagrammen, die ein einzelnes Modell integriert sind.Sie sind erweiterbar und können mit dem DSL mit ModelBuss integriert werden.Weitere Informationen finden Sie unter Entwickeln von Modellen für den Softwareentwurf.
Wählen Sie Minimaler WinForm-Designer oder Minimaler WPF-Designer aus, um ein DSL zu erstellen, das für Windows Forms und WPF Oberfläche angezeigt wird.Sie müssen Code schreiben, um den Editor zu definieren.Weitere Informationen finden Sie unter den folgenden Themen:
Erstellen einer Windows Forms-basierten domänenspezifischen Sprache
Geben Sie eine Dateinamenerweiterung für das DSL in der entsprechenden Assistentenseite ein.Dies ist die Erweiterung, die die Dateien, die Instanzen des DSL enthalten, verwenden.
Wählen Sie eine Dateinamenerweiterung, die keiner Anwendung im Computer zugeordnet ist, oder in jedem Computer aus, auf dem Sie das DSL installieren möchten.Beispielsweise können docx und htm unannehmbare Dateinamenerweiterungen sein.
Der Assistent warnt Sie, ob die Erweiterung, die Sie eingegeben haben, als DSL verwendet wird.Verwenden Sie eine andere Dateinamenerweiterung zu verwenden.Sie können die experimentelle Instanz von Visual Studio SDK zurücksetzen, um alte experimentelle Designer zu löschen.Klicken Sie auf Start, klicken Sie auf Alle Programme, Microsoft Visual Studio 2010 SDK, Extras, und klicken Sie dann Microsoft Visual Studio 2010 Experimentelle Instanz zurücksetzen.
Sie können entweder die Einstellungen auf den anderen Seiten anpassen, oder lassen Sie die Standardwerte.
Klicken Sie auf Fertig stellen.
Der Assistent erstellt eine Projektmappe mit zwei oder drei Projekte enthält, und generiert Code aus der DSL-Definition.
Die Benutzeroberfläche sieht nun dem folgenden Bild.
Diese Projektmappe definiert eine Domänen bestimmte Entwicklungssprache.Weitere Informationen finden Sie unter Übersicht über die Benutzeroberfläche für domänenspezifische Sprachtools.
Testen Sie die Projektmappe
Die Funktion stellt eine Projektmappe mit Vorlagen DSL, die Sie ändern, oder verwenden können, während sie ist.
So zeigen Sie die Projektmappe, die die Taste F5 oder STRG+F5 testen.Eine neue Instanz von Visual Studio wird im Testmodus gestartet.
In der neuen Instanz von Visual Studio, klicken Sie im Projektmappen-Explorer die Beispieldatei.Es wird als Diagramm mit einer Toolbox.
Wenn Sie eine Projektmappe aus, die Sie von der Minimale Sprache Vorlage erstellt haben, entspricht experimentelle Visual Studio dem folgenden Beispiel:
Experiment mit den Tools.Erstellen von Elementen und schließen Sie sie.
Schließen Sie die experimentelle Instanz von Visual Studio.
Hinweis |
---|
Wenn Sie das DSL geändert haben, sind Sie nicht mehr in der Lage, die Formen im Test Sample Datei anzuzeigen.Allerdings können neue Elemente zu erstellen. |
Die Vorlage ändern DSL
Benennen Sie, und halten Sie einige oder alle Domänen im Klassen und Klassen in der Definition der Vorlage DSL.Die neuen Klassennamen müssen gültige CLR-Namen, ohne Leerzeichen oder Satzzeichen sein.
Es ist besonders nützlich, um diese Klassen zu halten:
Die Stammklasse angezeigt diagramms der linken oberen Ecke des DSL-Definitions unter Klassen und Beziehungen.Benennen Sie sie mit einem Namen, der mit dem DSL unterscheidet.Zum Beispiel könnte ein DSL mit dem Namen MusicLibrary eine Stammklasse mit dem Namen Music.
Das Diagramm unten rechts Klasse wird an dem DSL-Definitions des diagramms, in der Diagrammelemente Spalte.Möglicherweise müssen Sie einen Bildlauf nach rechts ausführen, ihn zu finden.Es wird in der Regel TheDslDiagrammbenannt.
Wenn Sie die Aufgabenfluss Vorlage verwendet haben, um Diagramme mit Verantwortlichkeitsbereiche zu erstellen, die domänen Akteurs Klasse und die ActorSwimlane-Form halten und auf Umbenennen.
Löschen oder Umbenennen von anderen Klassen, um den Anforderungen anpassen.
Muster zum Definieren eines DSL
Wir empfehlen, dass Sie ein DSL entwickeln, indem Sie jeweils eine oder zwei Funktionen hinzufügen oder anpassen.Fügen Sie eine Funktion hinzu, führen Sie das DSL aus, und testen Sie sie, und fügen Sie dann ein oder zwei weitere Funktionen hinzufügen.Eine typische Funktion des DSL könnte:
Eine Domänenklasse, das Einbettungs-Verhältnis, das das Element, das Modell die Form, die zum Anzeigen von Elementen dieser Klasse im Diagramm erforderlich sind, und das Elementtool herstellt, mit dem Benutzer Elemente erstellen können.
Die Domäneneigenschaften eine Domänenklasse und der Decorator-Elemente, die auf einer Form angezeigt werden.
Ein Bezugs-Verhältnis und den Konnektor, der er im Diagramm und dem Tool Konnektor angezeigt wird, mit dem Benutzer Links erstellen können.
Eine Anpassung, die Programmcode erforderlich ist, z. B. eine Validierung KEY-Einschränkung oder ein Menübefehl.
In den folgenden Abschnitten wird beschrieben, wie die nützlichsten Arten von DSL-Funktionen erstellt.Es gibt viele weitere Muster, mit denen ein DSL erstellt werden kann, doch diese sind sehr häufig verwendet.
Hinweis |
---|
Nachdem Sie eine Funktion hinzugefügt haben, vergessen Sie nicht auf Alle Vorlagen transformieren auf der Symbolleiste des Projektmappen-Explorers klicken, bevor Sie erstellen und das DSL. |
Die folgende Abbildung zeigt Klassen und Verhältnis-Teil des DSL an, das als Beispiel in diesem Thema verwendet wird.
In der folgenden Abbildung ist ein Beispiel dieses Modells: DSL
Hinweis |
---|
„Modell“ bezieht sich auf eine Instanz des DSL, mit dem Benutzer erstellen, und wird normalerweise als Diagramm angezeigt.In diesem Thema werden das Modell und die Diagramm DSL-Definitions zur Verfügung, um Diagramme, die angezeigt werden, wenn das DSL verwendet wird. |
Definieren Domänen-Klassen
Domänen-Klassen stellen die Konzepte des DSL dar.Die Instanzen sind Modellelemente.Beispielsweise kann in einem MusicLibrary DSL können Sie die Domänen-Klassen, die Album Lied und genannt werden.
Um eine Domänenklasse zu erstellen, können Sie dem Tool Benannte Domänenklasse in das Diagramm ziehen und benennen Sie dann die Klasse.
Weitere Informationen finden Sie unter Eigenschaften von Domänenklassen.
Erstellen Sie ein Einbettungs-Verhältnis für jede Domänen-Klasse
Jede Domänenklasse mit Ausnahme der Stammklasse das Ziel eines einbettenden Beziehung muss mindestens, oder sie müssen von einer Klasse erben, die das Ziel eines Einbettungs-Verhältnisses ist.
In einem Modell ist jedes Modellelement ein Knoten in einer einzigen Struktur von Einbettungs-Verhältnissen.Die Quelle und das Ziel eines Einbettungs-Verhältnisses wird häufig als übergeordnetes Element und untergeordnetes Element.
Die Auswahl eines übergeordneten Elements für eine Domänenklasse hängt davon ab, wie Sie die Lebensdauer seiner Elemente von anderen Elementen abhängig sein soll.Wenn ein Knoten einer Struktur gelöscht wird, wird dessen Teilstruktur normalerweise ebenfalls gelöscht.Klassen des Elements, die ein Eigenleben haben, werden daher direkt unterhalb der Stammklasse eingebettet.
Normalerweise wenn Sie ein Element in einem anderen Element anzeigen möchten Sie ein Besitzers-Verhältnis angeben.In diesem Fall ist die die meisten entsprechende übergeordnete Klasse die Klasse des Containers.Die Ausnahme lautet, wenn das Element, das Sie in einem Container sehen, wirklich nur ein Link Verweise auf einen unabhängigen Element befindet.In diesem Fall löscht Löschen der den Container des Verweises nicht aber ihr Ziel.
In den Mustern von DSL-Definition in diesem Thema beschrieben wird, gehen davon aus, dass die Elemente, die sich innerhalb eines Containers angezeigt werden, gelöscht werden, wenn der Container gelöscht wird.Komplexere Schemas sind möglich. Außerdem können erreicht werden, indem Regeln definiert.
Wie Element angezeigt wird |
Mithilfe von eingebetteten Elemente (Klasse) |
Beispiel für die DSL-Projektmappen-Vorlage |
---|---|---|
Form auf Diagramm. Swimlane. |
Stammklasse von DSL. |
Minimale Sprache. Aufgaben-Fluss: Akteurs Klasse. |
Form im swimlane. |
Domänenklasse von Elementen, die als Verantwortlichkeitsbereiche angezeigt werden. |
Aufgaben-Fluss: Aufgabenklasse. |
Listenelement in der Form, in dem Element gelöscht wird, wenn Container gelöscht wird. Anschluss Rand der Form. |
Domänenklasse, die der Container Form zugeordnet ist. |
Klassendiagramm: Attributklasse. Komponentendiagramm: Port Klasse. |
Element in der Liste, nicht gelöscht, wenn Container gelöscht wird. |
Stammklasse von DSL. Die Listenanzeigenbezugslinks. |
|
Nicht direkt angezeigt. |
Die Klasse, von der er Teil darstellt. |
Im Beispiel werden Musik-Bibliotheks Alben als Rechtecke angezeigt, in der der Titel der aufgelisteten Lieder.Daher ist das übergeordnete Element des Albums die Stammklasse Musik, und das übergeordnete Element des Liedes ist Album.
So erstellen Sie eine Domänenklasse sein und gleichzeitig einbetten auf das Tool Einbettungsbeziehung Erstellen klicken, auf die übergeordnete Klasse und klicken Sie dann auf einen leeren Bereich des Diagramms klicken.
Es ist i. d. R. nicht erforderlich, den Namen des Einbettungs-Verhältnisses und ihrer Rollen anzupassen, da sie die Klassennamen automatisch nachverfolgt werden.
Weitere Informationen finden Sie unter Eigenschaften von Domänenbeziehungen und Eigenschaften von Domänenrollen.
Hinweis |
---|
Einbettung ist nicht identisch mit Vererbung.Untergeordnete Elemente in einem Einbettungs-Verhältnis erben keine Funktionen von ihren übergeordneten Elementen. |
Fügen Sie Domäneneigenschaften jeder Domänen-Klasse hinzu
Domäneneigenschaften speichern Werte.Beispiele sind: Name, Titel, Veröffentlichungs-Datum.
Klicken Sie auf Domäneneigenschaften in der Klasse, drücken Sie die EINGABETASTE, und geben Sie dann den Namen einer Eigenschaft ein.Der Standardtyp einer Domäneneigenschaft ist Zeichenfolge.Wenn Sie den Typ ändern möchten, wählen Sie die Domäneneigenschaft aus, und legen Sie den Typ im Fenster Eigenschaften fest.Wenn der Typ, den Sie nicht möchten, dass in der Dropdownliste ist, finden Sie unter Hinzufügen von Eigenschaftentypen.
Festlegen einer Eigenschaft Element-Name fest. Wählen Sie eine Domäneneigenschaft aus, die verwendet werden kann, um Elemente im Sprachen den Quellcodeverwaltungs-Explorer zu identifizieren.In der Lied domänen Klasse, dass Sie die Namen domäneneigenschaft auswählen können.Legen Sie im Fenster Eigenschaftentruezu Ist Elementname fest.
Erstellen von abgeleiteten Domänen-Klassen
Wenn Sie eine Domänenklasse Varianten des Benutzersteuerelements haben sollen, deren Eigenschaften und Beziehungen erben, erstellen Sie Klassen, die davon abgeleitet sind.Zum Beispiel könnte Album abgeleitete Klassen WMA und MP3.
Erstellen Sie die abgeleitete Klasse unter Verwendung des Domänenklasse Tools.
Klicken Sie auf das Tool Vererbung , klicken Sie auf die abgeleitete Klasse, und klicken Sie dann auf die Basisklasse.
Erwägen Sie, Vererbungsmodifizierer der Basisklasse zu Abstraktfestzulegen.Wenn Sie benötigen, könnten Sie, dass Instanzen der Basisklasse erwägen, eine separate abgeleitete Klasse zum Erstellen Sie stattdessen für diese Instanz.
Abgeleitete Klassen erben die Eigenschaften und Rollen ihrer Basisklassen.
Ordnen Sie das DSL-Definitions-Diagramm
Wenn Sie Beziehungen hinzufügen, werden einige der Klassen in mehr als einem Ort.Um die Anzahl der Darstellung reduzieren und das Diagramm mit der rechten Maustaste auf breiter machen die Zielklasse einer Beziehung, und klicken Sie dann auf Struktur hierher.Für den entgegengesetzten aus, klicken Sie mit der rechten Maustaste auf die Zielklasse einer Beziehung und klicken Sie auf Geteilte Struktur.Wenn Sie nicht über diese Menübefehle finden, müssen Sie sicherstellen, dass nur die Domänenklasse ausgewählt ist.
Verwenden Sie STRG+NACH-OBEN und STRG+NACH-UNTEN, um Domänen und im Klassen Klassen zu verschieben.
Testen Sie die Domänen Klassen
So testen Sie die neuen Domänen-Klassen
Klicken Sie auf "Alle Vorlagen transformieren" auf der Symbolleiste des Projektmappen-Explorers DSL-Designer, den Code generieren.Sie können diesen Schritt automatisieren.Weitere Informationen finden Sie unter So automatisieren Sie die Transformation aller Vorlagen.
Erstellen und Ausführen der DSL aus. Drücken Sie F5 oder STRG+F5, um eine neue Instanz von Visual Studio im Testmodus gestartet auszuführen.Klicken Sie in der experimentellen Instanz von Visual Studio, öffnen oder erstellen Sie eine Datei mit der Dateinamenerweiterung des DSL verfügt.
Öffnen Sie den Explorer. Auf der Seite des Diagramms ist das Sprachen den Quellcodeverwaltungs-Explorer, das Fenster Projektmappen-Explorer TheLanguage i. d. R.Wenn dieses Fenster nicht angezeigt werden, ist es möglicherweise auf einer Registerkarte mit den Projektmappen-Explorer.Wenn Sie es auf dem Ansicht Menü, zeigen Sie auf Weitere Fensternicht finden können, und klicken Sie dann auf TheLanguageKlicken SieExplorer.
Der Projektmappen-Explorer stellt eine Strukturansicht des Modells dar.
Erstellt neue Elemente. Klicken Sie mit der rechten Maustaste auf den Stammknoten, und klicken Sie dann oben auf Neu hinzufügenTheClass.
Eine neue Instanz der Klasse wird im Code Explorer.
Stellen Sie sicher, dass jede Instanz einen anderen Namen haben, wenn Sie neue Instanzen erstellen.Dies geschieht nur, wenn Sie das Ist Elementname-Flag für eine Domäneneigenschaft festgelegt haben.
Überprüfen Sie die Domäneneigenschaften. Bei einer Instanz der ausgewählten Klasse, überprüfen Sie das Eigenschaftenfenster.Er sollte den Domäneneigenschaften veranschaulichen, dass Sie für diese Domänenklasse definiert haben.
Speichern Sie die Datei, schließen Sie sie, und öffnen Sie sie.Alle Instanzen, die Sie erstellt haben, sollten im Explorer angezeigt werden, nachdem Sie den Knoten erweitern.
Formen im Diagramm definieren
Sie können Klassen von Elementen definieren, die in einem Diagramm als Rechtecken, Ellipsen oder Symbole angezeigt werden.
So erstellen Sie eine Klasse, die Elemente angezeigt, wie Formen in einem Diagramm definieren
Definieren und Testen Sie eine Domänenklasse beschrieben, wie Sie Domänen-Klassen definieren**.**
Das übergeordnete Element der Klasse sollte die Stammklasse sein.Das bedeutet, dass es ein Einbettungs-Verhältnis zwischen der Stammklasse und der neuen Domänenklasse geben.
Wenn das Diagramm Verantwortlichkeitsbereiche hat, kann das übergeordnete Element die Domänenklasse sein, die einem swimlane zugeordnet ist.Bevor Sie mit dieser Vorgehensweise fortfahren, finden Sie unter Ein DSL definieren, das Swimlanes hat.
Fügen Sie eine Form Klasse hinzu , um die Elemente im Modell Diagramm darzustellen.Ziehen Sie mit einem der folgenden Tools auf das Diagramm DSL-Definitions:
Geometrieform stellt ein Rechteck oder eine Ellipse.
Bild-Form zeigt ein Bild an, das Sie bereitstellen.
Depot-Form ist ein Rechteck, das eine oder mehrere Listen von Elementen enthält.
Benennen Sie die Form Klasse, die auf der rechten Seite des DSL-Definitions diagramms unter Formen und Konnektoren angezeigt wird.
Definieren Sie ein Bild, wenn Sie eine Bild Formerstellt haben.
Erstellen Sie eine Bilddatei beliebiger Größe.BMP, JPEG-, GIF- und EMF-Formate werden unterstützt.
Wählen Sie im Projektmappen-Explorer die Projektmappendatei unter Resources \ Dsl hinzu.
Kehren Sie zum DSL-Definitions zurück Diagramm, und wählen Sie die neue Form Bild aus - Klasse.
Klicken Sie im Eigenschaftenfenster auf die Bild-Eigenschaft.
Klicken Sie im Dialogfeld Bild auswählen Klicken Sie auf das Dropdownmenü unter Dateiname, und wählen Sie das Bild aus.
Hinzufügen von Text decorator-elemente der Form hinzu, um die Domäneneigenschaften anzuzeigen.
Um den Namen oder den Titel des Modellelements anzuzeigen, benötigen Sie möglicherweise über mindestens ein Text decorator-element.
Klicken Sie mit der rechten Maustaste auf die Kopfzeile der Form Klasse, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Text-Decorator-Element.Legen Sie den Namen des Decorator-Elements fest, und legen Sie im Eigenschaftenfenster fest. Position
Fügen Sie eine Form mit einer Diagramm-Element-Karte an die Domänenklasse an, in der sie angezeigt werden soll.
Klicken Sie auf das Tool Diagrammelementzuordnung , und klicken Sie dann auf die Domänenklasse, klicken Sie auf die Form Klasse.
Ordnen Sie die Eigenschaften auf den Text decorator-elementen.
Wählen Sie die graue Linie zwischen der Domänenklasse und der Form Klasse aus, die die Diagrammelement zugeordnet darstellt.
Im DSL-Details Fenster klicken Sie auf die Registerkarte Decorator-Zuordnungen .Wenn Sie nicht das DSL-Details Fenster, in dem Ansicht Menü, zeigen Sie auf Weitere Fenster , und klicken Sie dann auf DSL-Details.Häufig ist es erforderlich, den oberen Rand des Fensters aus, um den gesamten Inhalt anzuzeigen.
Wählen Sie den Namen eines Decorator-Elements aus.Die Eigenschaft anzeigenwählen Sie den Namen einer Eigenschaft der Domänenklasse aus.Wiederholen Sie diesen Vorgang für jeden Decorator-Element.
Wenn Sie eine zugehörige Eigenschaft eines Elements anzeigen möchten, klicken Sie auf den Dropdownpfeil unter Pfad zum Anzeigen der Eigenschaftnavigator Struktur.
Überprüfen Sie, ob ein Häkchen neben jedem Decorator-Element-Namen angezeigt wird.
Führen Sie ein Toolboxelement zum Erstellen von Elementen der Domänenklasse.
In DSL-ExplorerEditor erweitern Sie den Knoten und alle ihm untergeordneten Knoten.
Klicken Sie mit der rechten Maustaste auf den Knoten unter Toolboxregisterkarten , der denselben Namen wie das DSL verfügt, z. B. MusicLibraryKlicken Sie auf Elementtool hinzufügen.
Hinweis Wenn Sie mit der rechten Maustaste auf den Knoten Extras nicht finden Elementtool hinzufügen.Stattdessen klicken Sie auf den Knoten darüber.
Klicken Sie im Eigenschaftenfenster mit dem neuen ausgewählten Elementtool, legen Sie die Klasse Domänenklasse fest, die Sie zuletzt hinzugefügt haben.
Legen Sie QuickInfound Beschriftung fest.
Legen Sie Toolboxsymbol auf ein Symbol fest, das in der Toolbox angezeigt werden.Sie können jedoch auf ein neues Symbol oder ein Symbol festlegen, die bereits für ein anderes Tool verwendet werden.
Um ein neues Symbol zu erstellen, öffnen Sie Dsl \ Resources in Projektmappen-Explorer.Kopieren und Einfügen eines der vorhandenen Elementtool BMP-Dateien.Benennen Sie die eingefügte Kopie, und doppelklicken Sie anschließend, um sie zu bearbeiten.
Kehren Sie zum Diagramm DSL-Definitions zurück, wählen Sie das Tool und im Eigenschaftenfenster auf [...] in Toolboxsymbolaus.Wählen Sie im Dialogfeld Bitmap auswählen BMP-Datei aus dem Dropdownmenü aus.
Weitere Informationen finden Sie unter Eigenschaften geometrischer Formen und Eigenschaften von Bildformen.
So testen Sie die Forms
Klicken Sie auf "Alle Vorlagen transformieren" auf der Symbolleiste des Projektmappen-Explorers DSL-Designer, den Code generieren.
Erstellen und Ausführen der DSL aus. Drücken Sie F5 oder STRG+F5, um eine neue Instanz von Visual Studio im Testmodus gestartet auszuführen.Klicken Sie in der experimentellen Instanz von Visual Studio, öffnen oder erstellen Sie eine Datei mit der Dateinamenerweiterung des DSL verfügt.
Überprüfen Sie, ob die Tools in der Toolbox angezeigt werden.
Erstellen von Formen, indem Sie auf das Tool aus einem Modell Diagramm ziehen.
Stellen Sie sicher, dass jedes Text angezeigt wird und dassdecorator-element :
Sie können es bearbeiten, es sei denn, Sie das Ist schreibgeschützte Benutzeroberfläche-Flag auf der Domäneneigenschaft festgelegt haben.
Wenn Sie die Eigenschaft entweder im Eigenschaftenfenster oder im Decorator-Element bearbeiten, wird die andere Ansicht aktualisiert.
Nachdem Sie zuerst eine Form testen, können Sie einige ihrer Eigenschaften anpassen und erweiterte Features hinzufügen.Weitere Informationen finden Sie unter Anpassen und Erweitern einer domänenspezifischen Sprache.
Definieren Bezugs-Verhältnisse
Sie können ein Bezugs-Verhältnis zwischen einer Quelle und Ziel domänen Klasse domänen einer Klasse definieren.Bezugs-Verhältnisse werden in der Regel in einem Diagramm als Verbindungen angezeigt, welche Zeilen zwischen Formen sind.
Wenn z. B. als Künstler und Alben Musik Formen im Diagramm angezeigt werden, können Sie eine Beziehung definieren, das ArtistsAppearedOnAlbums dem Namen Alben zu den Künstler verknüpft, an dem sie bearbeitet haben.Weitere Informationen finden Sie im Beispiel in der Abbildung.
Bezugs-Verhältnisse können Elemente desselben Typs auch verknüpfen.Beispielsweise kann in einem DSL, das einen Stammbaum darstellt, ist die Beziehung zwischen übergeordneten Elementen und ihren untergeordneten Elementen ein Bezugs-Verhältnis von persönlichem.
Definieren Sie ein Bezugs-Verhältnis
Klicken Sie auf das Bezugs-Verhältnis-Tool, und klicken Sie dann auf die Quellspalten domänen class der Beziehung, und klicken Sie dann auf das Ziel domänen Klasse.Die Zielklasse kann mit der Quellklasse sein.
Jede Beziehung verfügt über zwei Rollen, dargestellt durch die Linie auf jeder Seite des Verhältnis-Felds.Sie können jede Rolle und seine Eigenschaften im Eigenschaftenfenster festlegen auswählen.
Verwenden Sie die Rollen auf Umbenennen.Beispielsweise kann in einer Beziehung zwischen Person und Person, sollten Sie den Standardnamen zu den übergeordneten Elementen und untergeordneten Elementen, Lehrer, sowohl Manager und Student und ändern usw.
Passen Sie die Multiplizitäten jeder Rolle, wenn es notwendig ist.Wenn Sie jede Person höchstens einen Manager haben soll, legen Sie die Multiplizität fest, die unter der Manager Bezeichnung im Diagramm auf 0..1 angezeigt wird.
Fügen Sie dem Domäneneigenschaften Beziehung hinzu. In der Abbildung verfügt das Künstler-Album Beziehung eine Eigenschaft der Rolle.
Legen Sie dieLässt Duplikate zuEigenschaft der Beziehung fest, wenn mehr als ein Link zwischen der gleichen Klasse denselben Paaren von Modellelementen vorhanden sein kann.Sie können z. B. einem Lehrer von mehr als einer Abhängigkeit von der gleichen Studenten zu unterrichten.
Weitere Informationen finden Sie unter Eigenschaften von Domänenbeziehungen und Eigenschaften von Domänenrollen.
Definieren Sie einen Konnektor, um die Beziehungen anzuzeigen
Ein Konnektor wird eine Linie zwischen zwei Formen im Modell Diagramm an.
Ziehen Sie das Tool Konnektor DSL-Definitions auf das Diagramm.
Hinzufügen von Text decorator-elemente hinzu, wenn Sie Bezeichnungen auf den Konnektor angezeigt werden soll.Legen Sie ihre Positionen fest.Damit Benutzer Text decorator-element verschieben zu lassen, legen Sie die Ist beweglich-Eigenschaft fest.
Verwenden Sie das Tool Diagrammelementzuordnung , um den Konnektor auf den Bezugs-Verhältnis zu verknüpfen.
Wenn die ausgewählte Diagrammelement zugeordnet ist, öffnen Sie das Fenster DSL-Details , und öffnen Sie die Decorator-Zuordnungen Registerkarte.
Wählen Sie entweder Decorator-Element und Festlegen von Eigenschaft anzeigen zur richtigen Domäneneigenschaft aus.
Überprüfen Sie, ob ein Häkchen neben jedem Element in der Decorator-Elemente Liste angezeigt wird.
Definieren Sie ein Verbindungs-Generator-Tool
Im DSL-Explorer Fenster Editor erweitern Sie den Knoten und alle ihm untergeordneten Knoten.
Klicken Sie mit der rechten Maustaste auf den Knoten, der denselben Namen wie das DSL aufweist, und klicken Sie dann auf Tool Neue Verbindung hinzufügen.
Während das neue Tool ausgewählt ist, werden im Eigenschaftenfenster angezeigt:
Legen Sie QuickInfound Beschriftung fest.
Klicken Sie auf Verbindungs-Generator , und wählen Sie den entsprechenden Generator für das neue Beziehung aus.
Legen Sie fest, dass Toolboxsymbol auf das Symbol in der Toolbox angezeigt werden sollen.Sie können ihn in ein neues Symbol oder ein Symbol festlegen, die bereits für ein anderes Tool verwendet werden.
Um ein neues Symbol zu erstellen, öffnen Sie Dsl \ Resources in Projektmappen-Explorer.Kopieren und Einfügen eines der vorhandenen Elementtool BMP-Dateien.Benennen Sie die eingefügte Kopie, und doppelklicken Sie anschließend, um sie zu bearbeiten.
Kehren Sie zum Diagramm DSL-Definitions zurück, wählen Sie das Tool und im Eigenschaftenfenster auf [...] in Toolboxsymbolaus.Wählen Sie im Dialogfeld Bitmap auswählen BMP-Datei aus dem Dropdownmenü aus.
So fügen Sie ein Bezugs-Verhältnis und - Connector testen
Klicken Sie auf "Alle Vorlagen transformieren" auf der Symbolleiste des Projektmappen-Explorers DSL-Designer, den Code generieren.
Erstellen und Ausführen der DSL aus. Drücken Sie F5 oder STRG+F5, um eine neue Instanz von Visual Studio im Testmodus gestartet auszuführen.Klicken Sie in der experimentellen Instanz von Visual Studio, öffnen oder erstellen Sie eine Datei mit der Dateinamenerweiterung des DSL verfügt.
Stellen Sie sicher, dass das Tool Verbindungen in der Toolbox angezeigt werden.
Erstellen von Formen, indem Sie auf das Tool aus einem Modell Diagramm ziehen.
Erstellen Sie Links zwischen Formularen.Klicken Sie auf das Tool Konnektor, klicken Sie auf eine Form, und klicken Sie dann auf eine andere Form.
Stellen Sie sicher, dass Sie Verbindungen zwischen ungeeigneter Klassen nicht erstellen können. Wenn z. B. die Beziehung zwischen Künstlern und Alben ist, stellen Sie sicher, dass Sie nicht den Künstler Künstlern verknüpfen können.
Stellen Sie sicher, dass die Multiplizitäten richtig sind. Beispielsweise stellen Sie sicher, dass Sie eine Person nicht mit mehr als einem Manager herstellen können.
Stellen Sie sicher, dass jedes Text angezeigt wird und dassdecorator-element :
Sie können es bearbeiten, es sei denn, Sie das Ist schreibgeschützte Benutzeroberfläche-Flag auf der Domäneneigenschaft festgelegt haben.
Wenn Sie die Eigenschaft entweder im Eigenschaftenfenster oder im Decorator-Element bearbeiten, wird die andere Ansicht aktualisiert.
Nachdem Sie zuerst einen Konnektor testen, können Sie einige ihrer Eigenschaften anpassen und erweiterte Features hinzufügen.Weitere Informationen finden Sie unter Anpassen und Erweitern einer domänenspezifischen Sprache.
Formen definieren, die Listen enthalten: Depot-Formen
Eine Depot Form enthält eine oder mehrere Listen mit Elementen.Beispielsweise kann in einer Musik-Bibliothek DSL können Sie verwenden, um Formen Depot Musik Alben darzustellen.In jedem Album gibt es eine Liste von Liedern.
In der einfachsten Methode des Erzielens dieses Effekts in einer DSL-Definition, definieren Sie eine Domänenklasse für den Container und eine Domänenklasse für jede Liste.Die Containerklasse wird auf Depot Form zugeordnet.
Weitere Informationen finden Sie unter Eigenschaften von Depotformen.
So definieren Sie eine Depot-Form
Erstellen Sie die Container domänen Klasse.Klicken Sie auf das Tool Einbettungsbeziehung , klicken Sie auf die Stammklasse des Modells, und klicken Sie dann auf einen leeren Teil des DSL-Definitions diagramms.Dadurch wird die Domänenklasse, die Album in der abbildung Beispiels.
Alternativ anstelle der Einbettung in der Stammklasse, können Sie den Container in einer Domänenklasse einbetten, die einem swimlane zugeordnet ist.
Fügen Sie eine Domäneneigenschaft wie Name der Klasse hinzu, und legen Sie dessen Ist Elementname-Flag im Eigenschaftenfenster fest.
Erstellen Sie die Listenelement domänen Klasse.Klicken Sie auf das Tool Einbettungsbeziehung , klicken Sie auf die Containerklasse (Album) und klicken Sie dann auf einen leeren Teil des Diagramms.Dadurch wird die Domänenklasse, die in der Song abbildung Beispiels.
Fügen Sie eine Domäneneigenschaft wie Name der Klasse hinzu, und legen Sie dessen Ist Elementname-Flag fest.
Fügen Sie weitere Domäneneigenschaften hinzu.
Fügen Sie eine andere Listenelement domänen Klasse für jede Liste hinzu, die Sie anzeigen möchten.
Um mehrere Arten Element in der Liste zu kombinieren, erstellen Sie Klassen aus der Liste der Klasse erben.Führen Sie die Listen mit abstrakten Klassen werden Vererbungsmodifiziererfestlegen.
Wenn Sie z. B. Komponisten von Musik klassische anstelle des Künstlers sortiert werden sollen, können Sie zwei Unterklassen Lied, ClassicalSong und NonClassicalSong erstellen.
Erstellen Sie die Depot Form.Ziehen Sie aus dem Depot-Form Tool DSL-Definitions auf das Diagramm.
Fügen Sie ein decorator-element Text hinzu, und legen Sie dessen Namen fest.
Fügen Sie einem Depot hinzu, und legen Sie seinen Namen fest.
Damit Benutzer die Listen depots ausblenden lassen, zeigen Sie mit der rechten Maustaste auf die Klasse, auf HinzufügenDepot Form und klicken Sie dann auf Decorator-Element erweitern/reduzieren.Legen Sie im Eigenschaftenfenster die Position des Decorator-Elements fest.
Klicken Sie auf das Tool Diagrammelementzuordnung , klicken Sie auf die Klasse domänen Container, und klicken Sie dann auf das Depot Form.
Wählen Sie den Link zwischen dem Diagramm element-Karten Domänenklasse und der Form aus.Im DSL-Details Windows:
Klicken Sie auf die Registerkarte Decorator-Elemente .Klicken Sie auf den Namen des Decorator-Elements und wählen Sie dann das entsprechende Element unter Eigenschaft anzeigenaus.Überprüfen Sie, ob ein Häkchen neben dem Namen des Decorator-Elements angezeigt wird.
Klicken Sie auf die Registerkarte Depotzuordnungen .
Klicken Sie auf den Namen des Depots.
Die Pfad der angezeigten Elementauflistungnavigieren Sie zur Listenelement class (Lied).Klicken Sie auf den Dropdownpfeil, um das Tool Navigator zu verwenden.
Die Eigenschaft anzeigenwählen Sie die Eigenschaft aus, die in der Liste angezeigt werden soll.Im Beispiel lautet dieser Name.
Hinweis |
---|
Mithilfe der Pfad Feldern zugeordnet und Depot in der Decorator-Element-Karten- Felder verwenden, können Sie komplexere Beziehungen zwischen Domänen Klassen und Depot Form machen. |
Um ein Tool zum Erstellen der Form definieren
Führen Sie ein Toolboxelement zum Erstellen von Elementen der Domänenklasse.
In DSL-ExplorerEditor erweitern Sie den Knoten und alle ihm untergeordneten Knoten.
Klicken Sie mit der rechten Maustaste auf den Knoten unter Toolboxregisterkarten , der denselben Namen wie das DSL verfügt, z. B. MusicLibraryKlicken Sie auf Elementtool hinzufügen.
Hinweis Wenn Sie mit der rechten Maustaste auf den Knoten Extras nicht finden Elementtool hinzufügen.Stattdessen klicken Sie auf den Knoten darüber.
Klicken Sie im Eigenschaftenfenster mit dem neuen ausgewählten Elementtool, legen Sie die Klasse Domänenklasse fest, die Sie zuletzt hinzugefügt haben.
Legen Sie QuickInfound Beschriftung fest.
Legen Sie Toolboxsymbol auf ein Symbol fest, das in der Toolbox angezeigt werden.Sie können sie in ein neues Symbol oder ein Symbol festlegen, die bereits für ein anderes Tool verwendet werden.
Um ein neues Symbol zu erstellen, öffnen Sie Dsl \ Resources in Projektmappen-Explorer.Kopieren und Einfügen eines der vorhandenen Dateien des Elements. .BMP toolsBenennen Sie die eingefügte Kopie, und doppelklicken Sie anschließend, um sie zu bearbeiten.
Kehren Sie zum Diagramm DSL-Definitions zurück, wählen Sie das Tool und im Eigenschaftenfenster auf [...] in Toolboxsymbolaus.Wählen Sie im Dialogfeld Bitmap auswählen BMP-Datei aus dem Dropdownmenü aus.
So testen Sie die Form einer Depot
Klicken Sie auf "Alle Vorlagen transformieren" auf der Symbolleiste des Projektmappen-Explorers DSL-Designer, den Code generieren.
Erstellen und Ausführen der DSL aus. Drücken Sie F5 oder STRG+F5, um eine neue Instanz von Visual Studio im Testmodus gestartet auszuführen.Klicken Sie in der experimentellen Instanz von Visual Studio, öffnen oder erstellen Sie eine Datei mit der Dateinamenerweiterung des DSL verfügt.
Stellen Sie sicher, dass das Tool in der Toolbox angezeigt werden.
Ziehen Sie das Tool Modell auf das Diagramm.Eine Form wird erstellt.
Überprüfen Sie, ob der Name des Elements angezeigt wird und automatisch auf einen Standardwert festgelegt ist.
Klicken Sie mit der rechten Maustaste auf die Kopfzeile der neuen Form, und klicken Sie dann auf Hinzufügen Das Listenelement. Im Beispiel ist der Befehl Lied hinzufügen.
Überprüfen Sie, ob sich ein Element in der Liste angezeigt wird und dass es einen neuen Namen verfügt.
Klicken Sie auf eines der Listenelemente, und aktivieren Sie dann das Eigenschaftenfenster.Sie sollten die Eigenschaften der Listenelemente erhalten.
Öffnen Sie den Projektmappen-Explorer Sprache.Stellen Sie sicher, dass Sie die Knoten Container mit den im Knoten Listenelement anzeigen können.
Nachdem Sie zuerst eine Depot Form testen, sollten Sie einige ihrer Eigenschaften anpassen und erweiterte Features hinzufügen.Weitere Informationen finden Sie unter Anpassen und Erweitern einer domänenspezifischen Sprache.
Wenn Sie einen Link in einem Depot Verweise anzeigen
Normalerweise ist ein Element, das Sie in einem Depot anzeigen, ein untergeordnetes Element des Elements, das durch die Depot Form dargestellt wird.Manchmal möchten Sie ein Element an, das zuvor mit einem Bezugs-Verhältnis verknüpft ist.
Zum Beispiel könnten Sie ein zweites Depot AlbumShape hinzufügen, das eine Liste mit den Künstler anzeigt, die dem Album verknüpft sind.
In diesem Fall sollte das Depot den Link statt des verweisenden Elements an.Dies liegt daran, dass der Benutzer das Element im Depot ausgewählt und DELETE Sie den Link klickt, die gelöscht werden sollen, nicht Element, auf das verwiesen wird.
Trotzdem können Sie den Namen des verweisenden Elements im Depot werden können.
Im folgenden Verfahren wird angenommen, dass Sie bereits die Domänenklasse, das Bezugs-Verhältnis, die Depot Form und Diagrammelement zugeordnet erstellt haben, wie weiter oben in diesem Abschnitt beschrieben.
So erstellen Sie einen Link in einem Depot Verweise anzeigen
Fügen Sie einem Depot der Depot Formhinzu.Klicken Sie im Diagramm mit der rechten Maustaste auf die DSL-Definitions Depot Form Klasse, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Depot.
Legen Sie Pfad der angezeigten Elementauflistung fest, um auf den Link, anstelle des Zielelements zu navigieren.Klicken Sie auf das Dropdownmenü und verwenden Sie die Strukturansicht, um das Bezugs-Verhältnis anstelle des Ziels auszuwählen.Im Beispiel wird die Beziehung ArtistAppearedOnAlbums.
Legen Sie fest Pfad zum Anzeigen der Eigenschaft als Link zum Zielelement zu navigieren.Im Beispiel ist dies Künstler.
Legen Sie Eigenschaft anzeigen der entsprechenden Eigenschaft des Zielelements, z. B. Namen fest.
Alle Vorlagen transformieren, Erstellung und Ausführung eines Tests öffnen und DSL dem Modell.
Im Modell Diagramm erstellen Sie die entsprechenden Klassen der Form, legen Sie deren Namen fest, und stellen Sie eine Verbindung zwischen ihnen.Depot in der Form sollten die Namen von verknüpften Elemente angezeigt werden.
Wählen Sie den Link oder das Element im Depot Form aus.sollten der Link und das Element ausgeblendet.
Ports auf der Begrenzung einer anderen Form definieren
Ein Port ist eine Form, die auf der Begrenzung einer anderen Form ist.
Anschlüsse können auch verwendet werden, um einen festen Verbindungspunkt auf einer anderen Form bereitstellen, mit der der Benutzer Verbindungen gezeichnet werden kann.In diesem Fall können Sie den Port Form transparent machen.
Um ein Beispiel der Anschlüsse verwendet, wählen Sie die Komponentendiagramm Vorlage aus, wenn Sie eine neue DSL-Projektmappe erstellen.In diesem Beispiel wird der Hauptsachen können Sie berücksichtigen, dass, wenn Sie Anschlüsse definieren:
Es gibt eine Domänenklasse, die den Container der Anschlüsse darstellt, Component.
Es gibt eine Domänenklasse, die Anschlüsse darstellt.Im Beispiel ist dies ComponentPort.
Es gibt ein Einbettungs-Verhältnis von der Container domänen - Klasse zur Port domänen Klasse.Weitere Informationen finden Sie unter Definieren Domänen-Klassen.
Wenn Sie unterschiedliche Arten von Ports auf den gleichen Container kombiniert werden sollen, können Sie Unterklassen der Port domänen - Klasse erstellen.Im Beispiel InPort erben und OutPort von ComponentPort.
Der Container domänen class kann auf beliebigen Format zugeordnet sind.Im Beispiel ist es ComponentShape.Weitere Informationen finden Sie unter Formen definieren.
Die Klassen werden domänen Anschluss an den Anschluss modellieren zugeordnet.Sie können entweder die abgeleiteten Klassen zuordnen, um Anschluss Form Klassen zu trennen, oder ordnen Sie die Basisklasse mit einer Anschluss Form Class.
Klicken Sie in anderer Hinsicht verhalten sich Anschluss modellieren, wie in Formen definierenbeschrieben.
Weitere Informationen finden Sie unter Eigenschaften von Anschlussformen.
Ein DSL definieren, das Swimlanes hat
Swimlanes handelt es sich um einen horizontalen oder vertikalen Partition eines Diagramms.Jedes swimlane entspricht einem Modellelement.Die DSL-Definition erfordert eine Domänenklasse für die swimlane Elemente.
Die beste Möglichkeit, ein DSL mit Verantwortlichkeitsbereiche zu erstellen, besteht darin, eine neue DSL-Projektmappe zu erstellen und die Aufgaben-Fluss Vorlage Projektmappe auszuwählen.In der DSL-Definition ist die Akteurs Klasse die Domänenklasse, die dem swimlane zugeordnet ist.Benennen Sie diese und andere Klassen im Projekt zu entsprechen.
Um eine Klasse hinzuzufügen, die als Form in einem swimlane angezeigt wird, erstellen Sie ein Einbettungs-Verhältnis zwischen der swimlane Klasse und der neuen Klasse.Benutzer sind für Elemente aus einem swimlane zu anderen in der Lage, aber jedes Element ist immer in einem bestimmten swimlane.In der Aufgaben-Fluss Office-Projektmappen Flusselement Vorlage ist ein untergeordnetes Element der swimlane Klasse.
Um eine Klasse hinzuzufügen, die unabhängig von der Form als Verantwortlichkeitsbereiche angezeigt wird, erstellen Sie ein Einbettungs-Verhältnis zwischen der Stammklasse und der neuen Klasse.Benutzer sind in der Lage, diese Formen auf eine beliebige Stelle im Diagramm platzieren. Dazu zählen zu den Grenzen von Verantwortlichkeitsbereiche und außerhalb der Verantwortlichkeitsbereiche.In der Aufgaben-Fluss Vorlage für Office-Projektmappen Kommentar ist ein untergeordnetes Element der Stammklasse.
Weitere Informationen finden Sie unter Eigenschaften von Verantwortlichkeitsbereichen.
Hinzufügen von Eigenschaftentypen
Domänen-Enumerationen und Literale
Eine Domänen Enumeration ist ein Typ mit Literalwerten.
So erstellen Sie eine Domänen Enumeration, klicken Sie mit der rechten Maustaste auf den Stamm des Modells hinzufügen und dann auf Neue Domänenenumeration hinzufügenin DSL-Explorer klicken.Das Element wird in DSL-Explorer unter dem Knoten Domänentypen .Dieses Element wird nicht im Diagramm angezeigt.
So Enumeration literale der Domänen Enumeration, klicken Sie mit der rechten Maustaste auf die Domänen Enumeration in DSL-Explorer hinzufügen und klicken Sie dann auf Neues Enumerationsliteral hinzufügen.
Standardmäßig kann eine Eigenschaft, die einen Enumerationstyp verfügt, auf einen Wert der Enumeration auf einmal festgelegt werden.Wenn Sie möchten, dass Benutzer, Programmierer und die Um eine beliebige Kombination aus den Werten festgelegt:„Bitfeld“ - legen die IsFlags-Eigenschaft der Enumeration fest.
Externe Typen
Wenn Sie den Typ einer Domäneneigenschaft, wenn Sie nicht den Typ finden Sie in der Dropdownliste Typ, Sie können einen externen Typ hinzufügen möchten.Sie können beispielsweise den System.Drawing.Color-Typ der Liste hinzugefügt.
Um einen Typ hinzuzufügen, klicken Sie mit der rechten Maustaste auf den Stamm des Modells DSL-Explorer, und klicken Sie dann auf Neuen externen Typ hinzufügen.Legen Sie im Fenster Eigenschaften den Namen und den Namespace in System.DrawingColor fest.Dieser Typ wird nun in DSL-Explorer unter Domänentypen.Sie können sie auswählen wenn Sie den Typ einer Domäneneigenschaft.
Das Anpassen DSL
Verwenden der Methoden, die in diesem Thema beschrieben werden, können Sie ein DSL mit einer grafischen Notation, einem lesbaren XML-Formular und den grundlegenden Tools schnell erstellen, die erforderlich sind, um Code und andere Artefakte generieren.
Es gibt zwei Möglichkeiten zum Erweitern der DSL-Definition:
Stimmen Sie das DSL ab, indem Sie weitere Features der DSL-Definition verwenden.Beispielsweise können Sie ein einzelnes Tool Konnektor erstellen, das mehrere Typen von Konnektor erstellt werden kann, und Sie können die Regeln steuern, durch die ein Element auch verknüpfte Elemente gelöscht wird, gelöscht wird.Diese Methoden werden meist durch Festlegen von Werten in der DSL-Definition erreicht, und einige erfordern einige Zeilen des Programmcodes.
Weitere Informationen finden Sie unter Anpassen und Erweitern einer domänenspezifischen Sprache.
Erweitern Sie die Modellierungs Tools, indem Sie Programmcode verwenden, um erweiterte Effekte zu erzielen.Sie können z. B. Menübefehle erstellen, die das Modell ändern können, und Sie können Tools erstellen, die zwei oder mehr DSL integrieren.VMSDK wurde speziell konzipiert, um es einfach zu gestalten, die Erweiterungen im Code zu integrieren, der von der DSL-Definition generiert wird.Weitere Informationen finden Sie unter Schreiben von Code zum Anpassen einer domänenspezifischen Sprache.
Die DSL-Definition ändern
Wenn Sie ein beliebiges Element in einer DSL-Definition erstellen, werden viele Standardwerte automatisch festgelegt.Nachdem sie festgelegt wurden, können Sie sie ändern.Dies vereinfacht die Entwicklung eines DSL, wenn die leistungsstarke Anpassungen noch zulässig ist.
Wenn Sie beispielsweise eine Form zu einem Element zugeordnet werden, wird der Pfad des übergeordneten Elements der Zuordnung automatisch entsprechend dem Einbettungs-Verhältnis der Domänenklasse festgelegt.Wenn Sie jedoch eine spätere Änderung das Einbettungs-Verhältnis, der Pfad des übergeordneten Elements nicht automatisch geändert werden.
Sie sollten daher beachten, dass, wenn Sie mehrere Beziehungen in der DSL-Definition ändern, ist es nicht ungewöhnlich, dass Fehler gemeldet werden, wenn Sie können entweder die Definition speichern oder wenn Sie auf Alle Vorlagen transformieren.Die meisten dieser Fehler sind einfach zu beheben.Doppelklicken Sie auf den Fehlerbericht, um die Position des Fehlers anzuzeigen.
Siehe auch Gewusst wie: Ändern des Namespace einer domänenspezifischen Sprache.
Problembehandlung
In der folgenden Tabelle sind einige der häufigsten Probleme aufgelistet, die beim Entwerfen DSL Sie ein zusammen mit Vorschlägen für die Projektmappe auftreten.Weitere Hinweise verfügbar Visualization Tools Extensibililty Forumist.
Problem |
Vorschlag |
---|---|
Die Änderungen, die ich habe DSL-Definitions in der Datei vorgenommen haben keine Auswirkungen. |
Klicken Sie auf Alle Vorlagen transformieren in der Symbolleiste über den Projektmappen-Explorer, und erstellen Sie die Projektmappe neu. |
Forms zeigen den Namen eines Decorator-Elements anstelle des Eigenschaftswerts an. |
Installieren Sie die Decorator-Element-Zuordnung.Klicken Sie im Diagramm DSL-Definitions Klicken Sie auf das Diagrammelement zugeordnet, die die graue Linie zwischen der Domänenklasse und der Form Klasse ist. Öffnen Sie das Fenster DSL-Details .Wenn Sie es, zeigen Sie im Menü Ansicht auf Weitere Fensterund dann nicht sehen können, klicken Sie auf DSL-Details. Klicken Sie auf die Registerkarte Decorator-Zuordnungen .Wählen Sie den Namen des Decorator-Elements aus.Stellen Sie sicher, dass das Kontrollkästchen daneben überprüft wird.Die Eigenschaft anzeigenwählen Sie den Namen einer Domäneneigenschaft aus. Weitere Informationen finden Sie unter Formen im Diagramm. |
In DSL-Explorer kann ich keiner Auflistung hinzufügen.Wenn z. B. mit der rechten Maustaste auf ich Tools ist kein „bin, fügen Sie Tool“ Befehl im Menü hinzu. Im Explorer für my DSL kann ich ein Element einer Liste hinzufügen. |
Klicken Sie mit der rechten Maustaste auf das Element über dem Knoten, den Sie versuchen.Wenn Sie eine Liste hinzugefügt werden soll, ist der Befehl Hinzufügen nicht im Listenknoten, jedoch in seinem Besitzer. |
Es erstellt eine Domänenklasse, aber ich den Quellcodeverwaltungs-Explorer Sprachen Instanzen im kann nicht erstellt werden. |
Jede Domänenklasse außer dem Stammverzeichnis muss das Ziel eines Einbettungs-Verhältnisses sein. |
Im Explorer für my DSL, werden Elemente nur mit dem Typnamen angezeigt. |
In der DSL-Definition wählen Sie eine Domäneneigenschaft der Klasse, und legen Sie im Eigenschaftenfenster Ist Elementname True aus. |
Das DSL öffnet immer im XML-Editor. |
Dies kann aufgrund eines Fehlers geschehen, während die Datei gelesen wurde.Auch nachdem Sie diesen Fehler zu beheben, müssen Sie den Editor explizit zurückzusetzen, um der DSL-Designer sein. Klicken Sie mit der rechten Maustaste auf das Projektelement Öffnen mit , und wählen Sie TheLanguageDesigner (Standard). |
Die Toolbox meines DSL wird nicht angezeigt, wenn ich die Assemblynamen geändert wurde. |
Überprüfen Sie und aktualisieren Sie DslPackage\GeneratedCode\Package.tt weitere Informationen finden Sie unter Gewusst wie: Ändern des Namespace einer domänenspezifischen Sprache. |
Die Toolbox meines DSL nicht angezeigt, aber ich habe keine Änderung des Assemblynamens. Oder ein Meldungsfeld erscheint, dass die Berichterstellung zu ladenden Erweiterung. |
Setzen Sie die experimentelle Instanz zurück, und erstellen Sie die Projektmappe neu.
|
Siehe auch
Aufgaben
Erstellen einer Windows Forms-basierten domänenspezifischen Sprache