Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una solución de lenguaje (DSL) específico de dominio genera una API que se puede utilizar para leer y actualizar instancias ADSL en Visual Studio.Esta API se define en el código que se genera a partir de la definición del ADSL.Este tema describe la API generado.
La solución de ejemplo: Diagramas de componentes
Para crear la solución que es el origen la mayoría de los ejemplos de este tema, cree ADSL de la solución de modelos componentes .Ésta es una de las plantillas estándar que aparece cuando se crea una nueva solución ADSL.
[!NOTA]
La plantilla componente ADSL de diagramas no está relacionado con los diagramas de componentes UML que puede crear mediante el menú de la arquitectura en Visual Studio Ultimate.En el cuadro de diálogo de Nuevo proyecto , expanda otros tipos de proyecto \Extensibility y haga clic en Diseñador específico del lenguaje.
Presione F5 y probar, si no está familiarizado con esta plantilla de solución.Observe en particular que cree puertos arrastrando una herramienta de puerto sobre un componente, y que puede conectar puertos.
.png)
La estructura de la solución ADSL
El proyecto de Dsl define API para ADSL.El proyecto de DslPackage define cómo se integra con Visual Studio.También puede agregar dispone los proyectos, que también pueden contener el código generado del modelo.
Los directorios de código
la mayor parte del código en cada uno de estos proyectos se genera de Dsl\DslDefinition.dsl.el código generado está en la carpeta de Generated Code .Para ver un archivo generado, haga clic en [+] junto al archivo de .tt que genera.
Se recomienda inspecciona el código generado para ayudarle a entender ADSL.Para ver los archivos generados, expanda los archivos de *.tt en el explorador de soluciones.
los archivos de *.tt contienen código que genera muy pequeño.En su lugar, se utilizan las directivas de <#include> para incluir los archivos de plantilla compartida.Los archivos compartidos se encuentran en \Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\DSL SDK\DSL Designer\11.0\TextTemplates
Cuando se agrega el propio código de programa a la solución ADSL, agréguela en un archivo independiente, fuera de la carpeta de código generado.Puede crear una carpeta de Custom Code .(Cuando se agrega un nuevo archivo de código a una carpeta personalizada, recuerde corregir el espacio de nombres en la estructura inicial de código).
Se recomienda encarecidamente no modifica el código generado directamente, porque las modificaciones se perderán cuando recompile la solución.En su lugar, personalizar ADSL:
Ajuste los muchos parámetros en la definición del ADSL.
Escriba las clases parciales en archivos de código independientes, los métodos de reemplazo que se definen en, o heredado por, las clases generadas.En algunos casos, debe establecer la opción de genera derivado doble de una clase en la definición de DSL, para poder reemplazar un método generado.
Establezca las opciones en la definición de ADSL que hacen que el código generado para proporcionar los “enlaces” para el propio código.
Por ejemplo, si establece la opción de tiene el constructor personalizado de una clase de dominio, y una vez compilada la solución, verá los mensajes de error.Al hacer doble clic en uno de estos mensajes de error, verá los comentarios del código generado que explican lo que debe proporcionar código personalizado.
Escriba las propias plantillas de texto para generar código específico para la aplicación.Puede utilizar archivos de inclusión para compartir las partes de las plantillas que son comunes a muchos proyectos, y puede crear plantillas de proyecto de Visual Studio a los proyectos de instalación que se inicializan con dispone de la estructura de archivos.
Archivos generados en el ADSL
los archivos generados siguientes aparecen en el proyecto de Dsl .
Nombre de archivo |
Descripción |
|---|---|
TheDslSchema.xsd |
El esquema de los archivos que contiene instancias de ADSL.Este archivo se copiará en el directorio de compilación (bin).Al instalar DSL, puede copiar este archivo a \Program Files\Microsoft Visual Studio 11.0\Xml\Schemas para poder validar archivos de modelo.Para obtener más información, vea Implementar soluciones de lenguajes específicos de dominio. Si personaliza la serialización estableciendo opciones en el Explorador ADSL, el esquema cambiará en consecuencia.Sin embargo, si escribe posee el código de serialización, este archivo se puede representar no más el esquema real.Para obtener más información, vea Personalizar el almacenamiento de archivos y la serialización XML. |
ConnectionBuilders.cs |
Un generador de conexión es una clase que crea relaciones.Es el código subyacente de una herramienta de conexión.Este archivo contiene un par de clases para cada herramienta de conexión.Los nombres son derivados de los nombres de la herramienta de la relación y la conexión de dominio: generador de relación, y ConnectorToolConnectAction. (En el ejemplo componente de la solución, uno de los generadores de la conexión se denomina ConnectionBuilder, Esta es una coincidencia, ya que la relación de dominio se denomina Conexión.) la relación se crea en el método de relaciónBuilder.Connect() .La versión predeterminada comprueba que los elementos del modelo de origen y de destino sean aceptables, y crea instancias de la relación.Por ejemplo: CommentReferencesSubject(sourceAccepted, targetAccepted); Cada clase de generador se genera de un nodo en la sección de Generadores de conexión en el Explorador de ADSL.Un método de Connect puede crear relaciones entre uno o más pares de clases de dominio.Cada par está definido por una directiva conectarse vínculo, que puede encontrar en el Explorador ADSL bajo el nodo del generador. Por ejemplo, podría agregar un a las directivas se conectan de generador de conexión vínculo para cada uno de los tres tipos de relaciones en el ejemplo ADSL.Esto proporcionaría al usuario una sola herramienta de conexión.El tipo de relación creado instancias depende de los tipos de origen y de los elementos target seleccionado por el usuario.Para agregar el vínculo conectar las directivas, haga clic con el botón secundario en un generador en el Explorador de ADSL. Para escribir código personalizado que se ejecuta cuando se crea un tipo específico de relación de dominio, seleccione la directiva conectarse vínculo apropiado bajo el nodo del generador.en la ventana Propiedades, establezca Utiliza custom conectar.Recompile la solución y, a continuación proporcione el código para corregir los errores resultantes. Para escribir código personalizado que se ejecuta siempre que el usuario utilice esta herramienta de conexión, establezca la propiedad de es personalizado del generador de la conexión.Puede proporcionar código que decide si un elemento de origen está permitido, si una combinación concreta de origen y de destino se permite, y qué actualiza se debe crear el modelo cuando se crea una conexión.Por ejemplo, podría permitir una conexión únicamente si no crearía un bucle en el diagrama.En lugar de un único vínculo de la relación, puede crear instancias de un modelo más complejo de varios elementos correlacionados entre el origen y el destino. |
Connectors.cs |
Contiene clases para los conectores, que son los elementos del diagrama que suelen representar relaciones de referencia.Cada clase se genera a partir de un conector en la definición del ADSL.Cada clase de conector es derivada de BinaryLinkShape Para crear un color y otra variable de características de estilo en tiempo de ejecución, haga clic con el botón secundario en la clase del diagrama de la definición de ADSL y elija agregue expuesto. Para crear variable de características adicional de estilo en tiempo de ejecución, vea por ejemplo TextField y ShapeElement. |
Diagram.cs |
contiene la clase que define el diagrama.es derivado de Diagram. Para crear un color y otra variable de características de estilo en tiempo de ejecución, haga clic con el botón secundario en la clase del diagrama de la definición de ADSL y elija agregue expuesto. Además, este archivo contiene la regla de FixupDiagram , que responde cuando un nuevo elemento se agrega al modelo.La regla agrega una nueva forma y vincula la forma al elemento de modelo. |
DirectiveProcessor.cs |
Este procesador de directivas ayuda a los usuarios a escribir plantillas de texto que leen una instancia ADSL.El procesador de directivas carga ensamblados (archivos DLL) para DSL, e inserta eficazmente las instrucciones de using para el espacio de nombres.Esto permite al código de las plantillas de texto utilice clases y relaciones que tiene definido en ADSL. Para obtener más información, vea Generar código a partir de lenguajes específicos de dominio y Crear procesadores de directivas personalizadas para las plantillas de texto T4. |
DomainClasses.cs |
Implementaciones de las clases de dominio que tiene definido, incluidas las clases abstractas y la clase modelo raíz.son derivados de ModelElement. Cada clase de dominio contiene:
|
DomainModel.cs |
la clase que representa el modelo de dominio.es derivado de DomainModel. Nota
Esto no es igual que la clase de la raíz del modelo.
La copia y delete Cierres definen lo que deben incluirse otros elementos cuando se copia o se elimina un elemento.Puede controlar este comportamiento estableciendo las propiedades de Propaga la copia y de Propaga Suprimir de los roles en cada lado de cada relación.Si desea que los valores que se determinarán dinámicamente, puede escribir código para reemplazar los métodos de las clases de Closure.Para obtener más información, vea Cómo: Comportamiento de copiar y pegar de los programas - redirigir. |
DomainModelResx.resx |
Contiene las cadenas como las descripciones de las clases y las propiedades de dominio, los nombres de propiedad, las etiquetas del cuadro de herramientas, los mensajes de error estándar, y otras cadenas que se pueden presentar al usuario.también contiene iconos y las imágenes de la herramienta para las formas de la imagen. Este archivo se enlaza en el ensamblado compilado, y proporciona los valores predeterminados de estos recursos.Puede adaptar ADSL creando un ensamblado satélite que contiene una versión localizada de los recursos.Esa versión se utilizará cuando ADSL se instala en una referencia cultural que coincide con los recursos localizados.Para obtener más información, vea Implementar soluciones de lenguajes específicos de dominio. |
DomainRelationships.cs |
Cada vínculo entre dos elementos en un modelo es representado por una instancia de una clase de la relación de dominio.Todas las clases de relación son derivadas de lElementLink, que a su vez es derivado de ModelElement.Dado que es un ModelElement, una instancia de una relación puede tener propiedades y puede ser el origen o el destino de una relación. |
HelpKeywordHelper.cs |
Proporciona las funciones que se utilizan cuando el usuario presione F1. |
MultiplicityValidation.cs |
En los roles de la relación donde especifica una multiplicidad de 1..1 u 1. *, el usuario debe ser advertido que por lo menos una instancia de la relación se requiere.Este archivo proporciona restricciones de validación que implementan esas advertencias.El vínculo 1..1 a un elemento primario de incrustación no se comprueba. Para que estas restricciones se ejecutarán, debe haber establecido una de las opciones de utiliza… en el nodo de editor \Validation en el Explorador de ADSL.Para obtener más información, vea La validación en los lenguajes específicos de dominio. |
PropertiesGrid.cs |
Este archivo contiene código solo si tiene asociado un Descriptor de personalizados a una propiedad del dominio.Para obtener más información, vea Personalizar la ventana Propiedades. |
SerializationHelper.cs |
|
Serializer.cs |
Una clase de serializador para cada clase, relación, forma, conector, diagrama, y modelo de dominio. Muchas de las características de estas clases se pueden controlar mediante los valores del Explorador ADSL en Comportamiento de serialización XML. |
Shapes.cs |
Una clase para cada clase shape en la definición del ADSL.las formas son derivadas de NodeShape.Para obtener más información, vea Personalizar el almacenamiento de archivos y la serialización XML. Para reemplazar los métodos generados con dispone de métodos en una clase parcial, establezca genera derivado doble para el conector en la definición del ADSL.Para reemplazar un constructor con el propio código, establezca tiene el constructor personalizado. Para crear un color y otra variable de características de estilo en tiempo de ejecución, haga clic con el botón secundario en la clase del diagrama de la definición de ADSL y elija agregue expuesto. Para crear variable de características adicional de estilo en tiempo de ejecución, vea por ejemplo TextField y ShapeElement |
ToolboxHelper.cs |
Establece el cuadro de herramientas instalando prototipos del grupo de elementos en las herramientas del elemento.Copias de estos prototipos se combinan con los elementos de destino cuando el usuario ejecuta la herramienta. Podría invalidar CreateElementPrototype() para definir un elemento de cuadro de herramientas que crea un grupo de varios objetos.Por ejemplo, puede definir un elemento para representar objetos que tienen subcomponentes.Después de cambiar el código, restaure la instancia experimental de Visual Studio para borrar la memoria caché del cuadro de herramientas. |
archivos generados en el proyecto de DslPackage
DslPackage relaciona el modelo ADSL al shell de Visual Studio , administrar la ventana, el cuadro de herramientas, y comandos de menú.La mayoría de las clases son derivadas doble, de modo que puede reemplazar cualquiera de sus métodos.
Nombre de archivo |
Descripción |
|---|---|
CommandSet.cs |
Los comandos de menú contextual que están visibles en el diagrama.Puede adaptar o agregar a este conjunto.este archivo contiene el código para los comandos.La ubicación de los comandos en menús viene determinada por el archivo de Commands.vsct.Para obtener más información, vea Escribir acciones y comandos de usuario. |
Constants.cs |
GUID. |
DocData.cs |
TheDslDocData administra la carga y guardar un modelo al archivo, y crea la instancia del almacén. Por ejemplo, si desea guardar ADSL en una base de datos en lugar de un archivo, podría invalidar Load y los métodos de Save . |
DocView.cs |
TheDslDocView administra la ventana en la que el diagrama aparece.Por ejemplo, podría insertar el diagrama en un formulario de windows: Agregue un archivo de control de usuario al proyecto de DslPackage.Agregar un panel en el que el diagrama puede mostrar.Agregue botones y otros controles.En la vista de código del formulario, agregue el código siguiente, ajustando los nombres a ADSL: |
EditorFactory.cs |
crea instancias DocData y DocView.Satisface una interfaz estándar que Visual Studio utilice para abrir un editor cuando el paquete ADSL inicia.se hace referencia en el atributo de ProvideEditorFactory en Package.cs |
GeneratedVSCT.vsct |
Busca los comandos de menú estándar en menús, tales como el menú contextual de diagrama, el menú de Editar , etc.el código para los comandos está en CommandSet.cs.Puede reubicar o modificar los comandos estándar, y puede agregar para sus propios comandos.Para obtener más información, vea Escribir acciones y comandos de usuario. |
ModelExplorer.cs |
Define el Explorador de modelos para ADSL.Esta es la vista de árbol del modelo que el usuario ve junto al diagrama. Por ejemplo, podría invalidar InsertTreeView() para cambiar el orden en el que aparecen en el Explorador de modelos. Si desea que la selección en el explorador de modelos para mantener sincronizado con la selección del diagrama, puede utilizar el código siguiente: |
ModelExplorerToolWindow.cs |
Define la ventana en la que aparece el explorador de modelos.Controla la selección de elementos en el explorador. |
Package.cs |
Este archivo define cómo ADSL integra en Visual Studio.Los atributos en la clase de paquete registran ADSL como el controlador para los archivos que tienen la extensión de archivo, defina su cuadro de herramientas, y definen cómo abrir una nueva ventana.El método de Initialize() se llama una vez a primer ADSL se cargan en una instancia de Visual Studio . |
Source.extension.vsixmanifest |
para personalizar este archivo, edite el archivo de .tt . Precaución
Si edita el archivo .tt para incluir recursos como iconos o imágenes, asegúrese de que incluyan el recurso en la generación de VSIX.En el explorador de soluciones, seleccione el archivo y asegúrese de que la propiedad de Incluir en VSIX es True.
Este controles de archivos cómo ADSL se empaqueta en una extensión de integración de Visual Studio.Para obtener más información, vea Implementar soluciones de lenguajes específicos de dominio. |
Vea también
Conceptos
Cómo: Definir lenguajes específicos de dominio
Introducción a los modelos, las clases y las relaciones
Personalizar y ampliar lenguajes específicos de dominio
Otros recursos
Escribir código para personalizar lenguajes específicos de dominio
Nota
Precaución