Поделиться через


Начало работы с доменными языками

В этом разделе описываются основные понятия в определении и использовании доменный язык (DSL).

Для новичков в DSLs, рекомендуется работы посредством DSL Tools Lab, который можно найти в этом сайте. Пакет SDK для Visualizaton и моделирования

Что можно делать с доменным языком?

Доменный язык нотация, обычно рисунок, которая предназначена для использования для определенной цели.Напротив, языки, например UML общецелевы.В DSL, можно указать типы элементов модели и их связей и их на экране.

При создании DSL, можно распределять их как часть пакета расширения интеграции Visual Studio (VSIX).Пользователи работают с DSL in Visual Studio.

Обозреватель, панель элементов и схема семейного дерева

Нотация только часть DSL.Вместе, используя нотацию, пакет VSIX содержит средства, которые пользователи могут применять для них для редактирования и создается материал из их моделей.

Одно из основных приложений DSLs создавать программный код, файлы конфигурации и другие артефакты.Особенно в больших проектах и семействах продуктов, где будут созданы несколько вариантов продукта, формирование многие аспекты из переменных DSLs может создать большое увеличение надежности и очень быстро ответ с требованиями изменяется.

Оставшаяся часть этого обзора пошаговое руководство, которое вставляет основные операции создания и использования доменный язык in Visual Studio.

Предварительные требования

Чтобы определить DSL, необходимо установить следующие компоненты:

Visual Studio

https://go.microsoft.com/fwlink/?LinkId=185579

SDK для Visual Studio

https://go.microsoft.com/fwlink/?LinkId=185580

Пакет SDK для визуализации данных и моделирования Visual Studio

https://go.microsoft.com/fwlink/?LinkID=186128

Создание решения DSL

Чтобы создать доменный язык создании новой Visual Studio решение с помощью шаблона проекта доменного языка.

Создание решения DSL

  1. В меню Файл последовательно выберите пункты Создать и Проект.

  2. Под Типы проектовразверните Другие типы проектов узел и нажмите кнопку Расширение среды.

  3. Нажать Конструкторе доменного языка.

    Создание диалогового окна DSL

  4. в Имя окно, тип FamilyTree.Нажмите кнопку ОК.

    Мастер доменного языка открытые и отображает список решений DSL шаблона.

    Щелкните каждый шаблон, чтобы просмотреть описание

    Шаблоны полезные отправные точки.Каждое из них предоставляет полный рабочий DSL, который можно изменить в соответствии с своими потребностями.Как правило, выбратьTfи бы шаблон ближайшего, что требуется создать.

  5. Для этого пошагового руководства выберите Минимальный язык шаблон.

  6. Введите расширение имени файла для DSL в соответствующую страницу мастера.Это расширение, в файлы, содержащий экземпляры DSL будут использоваться.

    • Выберите расширение, которое не связано ни с каким приложением в компьютере или на любом компьютере, где нужно устанавливать DSL.Например, docx и htm является неприемлемыми расширений имени файла.

    • Мастер предупредит если расширение, введенный используется в качестве DSL.Рекомендуется использовать другое расширение имени файла.Можно также сбросить экземпляр Visual Studio SDK экспериментальном, чтобы очистить старые экспериментальном конструкторы ожидания.Нажать Запускщелкните Все программы" Пакет SDK для Visual Studio 2010" Сервиси Сбросить экземпляр Microsoft Visual Studio 2010 экспериментальном.

  7. Проверьте другие страницы, а затем нажмите кнопку Готово.

    Создается решение, содержащее project 2.Они называются Dsl и DslPackage.Открытие файла схемы с именем DslDefinition.dsl.

    ПримечаниеПримечание

    Большая часть кода, который можно увидеть в папках в проектах сформирована из DslDefinition.dsl 2.По этой причине большинству изменения в DSL внесены в данном файле.

Пользовательский интерфейс теперь похожа на следующее изображение.

конструктор dsl

Это решение задает язык для домена.Дополнительные сведения см. в разделе Обзор пользовательского интерфейса средств доменных языков.

Важные части решения DSL

Обратите внимание на следующие аспекты нового решения.

  • **Dsl \ DslDefinition.dsl   **Это файл, который отображается при создании решения DSL.Почти полностью код в решении создается из этого файла и большинство изменений, внесенные в определение DSL осуществляется здесь.Дополнительные сведения см. в разделе working with Работа со схемой определений доменных языков.

  • **проект Dsl   **Этот проект содержит код, определяющий доменный язык.

  • проект DslPackage   Этот проект содержит код, позволяющий экземпляры DSL, который необходимо открыть, и отредактированный in Visual Studio.

Запуск DSL

Можно запустить решение DSL после создания его.Позже можно изменить определение DSL постепенно, выполняется решение снова после каждого изменения.

Поэкспериментировать с DSL

  1. Нажать Преобразовать все шаблоны на панели инструментов обозревателя решений.Это повторно создает большую часть исходного кода из DslDefinition.dsl.

    ПримечаниеПримечание

    При изменении DslDefinition.dsl необходимо щелкнуть Преобразовать все шаблоны прежде чем перестроении решения.Можно автоматизировать этот шаг.Дополнительные сведения см. в разделе Автоматизация преобразования всех шаблонов.

  2. Нажмите клавишу F5 или Отладка меню выберите команду Начните отладку.

    Построение DSL и устанавливаются в экспериментальном экземпляре Visual Studio.

    Запустится экспериментальный экземпляр Visual Studio.Экспериментальном экземпляр принимает его параметры из отдельного поддерева реестра, где Visual Studio расширения, зарегистрированные для отладки.Обычные экземпляров Visual Studio не имеющих доступ к расширениям, зарегистрированных в ней.

  3. В экспериментальном экземпляре Visual Studioоткрыть файл с именем модели Тест из Обозреватель решений.

    - или -

    Щелкните правой кнопкой мыши проект, выберите пункт отладки Добавить, а затем нажмите кнопку ЭлементДобавить элемент откроется диалоговое окно выберите тип файла проекта DSL.

    Файл модели открывается как пустую схему.

    Открытые области элементов и средства, соответствующие схеме отображает тип.

  4. Используйте средства для создания фигур и соединителей на схеме.

    1. Для создания фигур, перетащите из примера средства фигуры на схеме.

    2. Для подключения 2 фигуры, щелкните средство соединителя примера выберите первая форма, а затем щелкните вторую фигуру.

  5. Щелкните метки фигур, чтобы их изменить.

В экспериментальном Visual Studio будет выглядеть примерно так:

Ee943825.DSL_min(ru-ru,VS.110).png

Ee943825.collapse_all(ru-ru,VS.110).gifСодержимое модели

Содержимое файла, экземпляр DSL вызывается a модель.Модель содержит модельэлементы и связи между элементами.Определение DSL определяет, какие типы элементов модели и ссылок могут существовать в модели.Например, в DSL, созданный из минимального шаблона языка, один тип элемента модели, и один тип связи.

Определение DSL может определить как модель отображается на схеме.Можно выбрать один из нескольких стилей фигур и соединителей.Можно указать, что некоторые фигуры помещаются в других фигур.

Можно просмотреть модель в виде дерева в Проводник представление при редактировании модели.При добавлении фигуры на схеме элементы модели также отображаются в обозревателе.Обозревателе можно использовать даже если схема.

Если не отображается в обозревателе в экземпляре отладки Visual Studioна Просмотреть пункт меню в Другие окна, а затем нажмите кнопку <Пользовательский язык> Проводник.

Ee943825.collapse_all(ru-ru,VS.110).gifAPI вашего DSL

Ваш DSL демонстрирует API, который позволяет считывать и обновление моделей, экземпляры DSL.Одно приложение api-интерфейса формировать текстовые файлы на основе модели.Дополнительные сведения см. в разделе Создание кода во время разработки с помощью текстовых шаблонов T4.

В решении отладки, откройте файлы шаблонов с расширением ".tt".Эти образцы демонстрируют, как можно создать текст из моделей и позволяют проверить API вашего DSL.Примеры написания in Visual Basicвыберите другое in Visual C#.

Под каждым файлом шаблона файл, он создается.Разверните узел файла шаблона в обозревателе решений и откройте созданный файл.

Файл шаблона, содержащий короткий фрагмент кода, который перечисляет все элементы в модели.

Созданный файл содержит результат.

При изменении файл модели, можно увидеть соответствующие изменения в созданных файлах после того как повторно сформируйте значение идентификатора файлы.

Повторное создание текстовых файлов после изменения файл модели

  1. В экспериментальном экземпляре Visual Studioсохраните файл модели.

  2. Убедитесь, что параметр имени файла в каждом файле .tt ссылается на файл модели, используемой для экспериментов.Сохраните tt-файл.

  3. Нажать Преобразовать все шаблоны в панели инструментов Обозреватель решений.

    - или -

    Щелкните правой кнопкой мыши шаблоны, которые требуется восстановить, и затем щелкнуть Запустить пользовательский инструмент.

Можно добавить любое количество файлов текстового шаблона в проект.Каждый шаблон создает один файл результата.

ПримечаниеПримечание

При изменении определения DSL, код текстового шаблона образцы не будет работать, если не обновить его.

Дополнительные сведения см. в разделах Создание кода из доменного языка и Написание кода для настройки доменного языка.

Настраивать DSL

Если необходимо изменить определение DSL, закройте экспериментальном экземпляр и обновление на основе определение Visual Studio экземпляр.

ПримечаниеПримечание

После того как вы измените определение DSL, можно потерять данные в моделях теста, созданных с помощью предыдущих версий.Например, решение отладки содержит файл с именем Образцом, которая содержит несколько фигур и соединителей.После запуска, чтобы начать определение DSL, они не будут видны, и они будут утеряны при сохранении файла.

Можно выполнять широкий набор расширений для DSL.В следующих примерах передают его впечатление возможностей.

После каждого изменения сохраняются, щелкните определение DSL Преобразовать все шаблоны IN Обозреватель решенийи нажмите клавишу F5 поэкспериментировать с измененным DSL.

Ee943825.collapse_all(ru-ru,VS.110).gifПереименование типов и средства

Переименуйте существующие классы доменных и связи.Например, начиная с определением Dsl, созданные из минимального шаблона языка, можно выполнить следующие операции переименования, чтобы сделать DSL представления фамильные дерев дерев.

Переименование доменных классы, связи и средства

  1. В схеме DslDefinition переименуйте ExampleModel к FamilyTreeModel, ExampleElement к продаже, целевым объектам в родительскиям и источникам к дочерним элементам.Можно щелкнуть каждую метку, чтобы изменить ее.

    Схема определения DSL — модель семейного дерева

  2. Переименуйте средства элемента и соединителя.

    1. Откройте окно обозревателя DSL, щелкнув вкладку в обозревателе решений.Если не отображается, то на Просмотреть пункт меню в Другие окна затем перейдите Обозреватель DSL.Обозреватель DSL является видимым только если схема определения DSL активное окно.

    2. Откройте окно свойств и расположите его, чтобы можно было видеть обозревателе и свойства DSL одновременно.

    3. Разверните в обозревателе DSL Редактор" Вкладки панели элементов" <ваш DSL>и Сервис.

    4. Нажмите кнопку ExampleElement.Это элемент панели инструментов, используемый для создания элементов.

    5. В окне свойства измените Имя свойство к продаже.

      Обратите внимание, что подпись свойства изменений.

    6. Аналогичным образом измените имя средства ExampleConnector к ParentLink.Изменение подпись свойство, чтобы не будет копией свойства name.Например, введите родительскую связь.

  3. Перестройте DSL.

    1. Сохраните файл определения DSL.

    2. Нажать Преобразовать все шаблоны на панели инструментов обозревателя решений

    3. Нажмите клавишу F5.Не будут ожидать экспериментальном экземпляре Visual Studio отображается.

  4. В решении отладки в экспериментальном экземпляре Visual Studioоткрыть файл модели теста.Перетащите элементы на его из области элементов.Обратите внимание, что заголовки средства и имена типов в обозревателе DSL изменилось.

  5. Сохраните файл модели.

  6. Откройте файл .tt и замените вхождения старых типов и имен свойств с новыми именами.

  7. Убедитесь, что имя файла, указанное в файле .tt определяет пользовательскую модель теста.

  8. Сохраните tt-файл.Откройте созданный файл, чтобы увидеть результат выполнения кода в файле .tt.Убедитесь, что верен.

Ee943825.collapse_all(ru-ru,VS.110).gifДобавьте свойства домена в классы

Добавьте свойства в доменному классу, например для представления годы рождения и смерти person.

Чтобы сделать новые свойства видимыми на схеме, необходимо добавить Оформители к фигуре, указывающее элемент модели.Также необходимо сопоставить свойства в оформителям.

Добавление свойств и отображения они

  1. Добавьте свойства.

    1. В схеме определения DSL, щелкните правой кнопкой мыши доменный класс, указывающие на продажи Добавить, а затем нажмите кнопку Свойство домена.

    2. Введите список новых имен свойств, например рождение и смерть.Нажать Вставить после каждого из них.

  2. Добавьте свойства оформители, которые будут отображаться в фигуре.

    1. Следуйте серой линии от доменного класса person с другой стороны схемы.Это сопоставление элемента схемы.Он связывает доменный класс для класса формы.

    2. Щелкните правой кнопкой мыши этот класс формы, укажите Добавить, а затем нажмите кнопку Оформитель текста.

    3. Добавьте 2 оформителя с именами, что и BirthDecorator DeathDecorator.

    4. Выберите каждый новый оформитель и в окне свойства установите Position поле.Это определяет, где значение свойства домена будет отображаться на форме.Например, установка InnerBottomLeft и InnerBottomRight.

      Определение фигуры секции

  3. Сопоставление оформители к свойствам.

    1. Открыть окно сведений DSL.Она обычно на вкладке рядом с окном вывод.Если не отображается, то на Просмотреть меню наведите курсор на пункт Другие окна, а затем нажмите кнопку Сведения DSL.

    2. На схеме определения DSL, щелкните линию, которая соединяется доменный класс лиц к классу формы.

    3. IN Сведения DSLна Сопоставления оформителя вкладка щелкните флажок для неуправляемого оформителе.IN Свойство отображениявыберите свойство домена, к которому необходимо его сопоставления.Например, сопоставление BirthDecorator к рождению.

  4. Сохраните DSL, нажмите кнопку преобразует все шаблоны, а затем клавишу F5.

  5. В схеме образца модели, убедитесь, что теперь можно щелкнуть положения выбрано и введите значения в них.Кроме того, при выборе фигуры person в окне свойства отображаются новые рождение и смерть свойств.

  6. В файле .tt можно добавить код, который возвращает свойства каждого менеджера.

Обозреватель, панель элементов и схема семейного дерева

Ee943825.collapse_all(ru-ru,VS.110).gifОпределение новых классов

Можно добавить доменных классы и связей в модели.Например, можно создать новый класс для представления городки и создать связь, чтобы представить, что пользователь жила в городке.

Чтобы сделать различные типы моделей определенным в схеме можно сопоставить доменных классы к различным типам фигуры или к фигурам с различными геометрией и цветами.

Добавление и отображения новый доменный класс

  1. Добавьте доменный класс и выполните его дочерний элемент из корневого элемента модели.

    1. В схеме определения DSL, нажмите кнопку Внедрение связи средство, нажмите кнопку FamilyTreeModel класс adapter, а затем щелкните пустую область схемы.

      Новый доменный класс, который будет подключен к FamilyTreeModel с отношением внедрения.

      Задайте его имя, например городок.

      ПримечаниеПримечание

      Доменный класс за исключением того, что каждый корень модели должен быть целевым объектом хотя бы одного внедрения связи или он должен наследовать от класса, целевой объект внедрения.По этой причине часто бывает удобно, чтобы создать доменный класс с помощью внедрения средства связи.

    2. Добавьте свойство домена, например к новому классу имя.

  2. Добавьте связь ссылки между sales и городком.

    1. Щелкните Отношение ссылки средство лицо и нажмите кнопку городок.

      Фрагмент определения DSL: корень семейного дерева

      ПримечаниеПримечание

      Связи ссылки представляют перекрестные ссылки из одной части дерева модели.

  3. Добавьте форму для представления модели городки в схемах.

    1. Перетащите a Фигуры типа geometry из панели элементов на схему и переименуйте ее, например TownShape.

    2. В окне свойства задайте поля вид новой фигуры, например цвет заливки и геометрические фигуры.

    3. Добавьте оформитель для отображения имени городка и переименуйте его NameDecorator.Присвойте его свойству положение.

  4. Сопоставление доменный класс городка к TownShape.

    1. Щелкните Сопоставление элемента схемы средство, нажмите кнопку доменный класс городка, а затем класс формы TownShape.

    2. в Сопоставления оформителя вкладка Сведения DSL окно с выбранным соединителем сопоставления, платежным документом и набором NameDecorator Свойство отображения именования.

  5. Создайте соединитель для отображения отношений между sales и городками.

    1. Перетащите соединитель из панели элементов на схему.Переименуйте его и задайте его свойства внешнего вида.

    2. Используйте Сопоставление элемента схемы средство для связывания нового соединитель между sales и городком к отношению.

      Определение семейного дерева с добавленной картой фигур

  6. Создает средство для создания нового элемента городок.

    1. IN Обозреватель DSLразверните Редактор then Вкладки панели элементов.

    2. Щелкните правой кнопкой мыши <ваш DSL> затем перейдите Добавьте новое средство элемента.

    3. Установка Имя свойству и задать его функциональные возможности Класс свойство к городку.

    4. Установка Значок панели элементов свойство.Нажать [...] и Имя файла поле, выберите файл значка.

  7. Создает средство соединителя для создания соединения между городками и продажи.

    1. Щелкните правой кнопкой мыши <ваш DSL> затем перейдите Добавьте новое средство соединителя.

    2. Задайте свойству имя нового инструмента.

    3. в ConnectionBuilder свойство выберите построитель Продажа-Городка, содержащее имя связи.

    4. Установка Значок панели элементов.

  8. Сохраните определение DSL, нажмите кнопку Преобразовать все шаблоныи нажмите клавишу F5.

  9. В экспериментальном экземпляре Visual Studioоткрыть файл модели теста.Используйте новые средства для создания городки и связи между городками и людьми.Обратите внимание, что можно создать только связи между правильными типами элементов.

  10. Создайте код, в котором перечислены городок, в котором каждый сотрудник существует.Текстовые шаблоны одно из мест, где можно выполнить такой код.Например, можно изменить существующий файл Sample.tt в решении отладки, чтобы оно будет содержать следующий код:

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

    При сохранении файла *.tt, он создает дочерний файл, содержащий список пользователей и их резиденций.Дополнительные сведения см. в разделе Создание кода из доменного языка.

Проверка и команды

Можно разрабатывать данный DSL дальше путем добавления ограничения проверки.Эти ограничения методы, которые можно задать, то убедитесь в том, что модель в правильном состоянии.Например, можно определить ограничение, чтобы убедиться, что дата рождения дочернего элемента более поздней, чем дата из его родительскиев.Функция проверки отображает предупреждение, если пользователь DSL пытается сохранить модель, ограничения разбивает any.Дополнительные сведения см. в разделе Проверка в доменных языках.

Также можно указать команды меню, пользователь может вызвать.Команды могут изменять модель.Они также могут взаимодействовать с другими моделями внутри Visual Studio с внешними ресурсами.Дополнительные сведения см. в разделе Практическое руководство. Изменение стандартной команды меню в доменном языке.

Развертывание DSL

Для того, чтобы позволить другим пользователям для использования доменного языка, распределяете a Visual Studio файл расширения (VSIX).При этом создается при построении решения DSL.

Найдите файл с расширением vsix в папке bin данного решения.Скопируйте его на компьютер, на котором нужно устанавливать его.На данном компьютере дважды щелкните файл VSIX.DSL можно использовать во всех экземплярах Visual Studio на данном компьютере.

Можно воспользоваться той же процедурой для установки DSL в собственном компьютере, поэтому не нужно использовать экспериментальном экземпляр Visual Studio.

Дополнительные сведения см. в разделе Развертывание решений на доменных языках.

Удалить старое экспериментальном DSLs

Если вы создали экспериментальном DSLs, которое больше не требуется, можно удалить их из вашего компьютера, сбросить Visual Studio Экспериментальном экземпляр.

При этом удаляются с компьютера все экспериментальном DSLs и другие экспериментальном Visual Studio расширения.Эти расширения, которые были выполнены в режиме отладки.

Эта процедура не удаляет DSLs или другое Visual Studio расширения, которые были полностью устанавливаются путем выполнения файл VSIX.

Сбросить экземпляр Visual Studio экспериментальном

  1. Нажать Запускщелкните Все программы" Пакет SDK для Visual Studio 2010" Сервиси Сбросить экземпляр Microsoft Visual Studio 2010 экспериментальном.

  2. Перестройте любое экспериментальном DSLs или другое экспериментальном Visual Studio расширения, которые все еще требуется использовать.

См. также

Основные понятия

Сведения о моделях, классах и отношениях

Определение доменного языка

Другие ресурсы

Пакет SDK для Visualizaton и моделирования