August 2007 - Artículos

Buenas

después del Service Release 1 para Visual Studio Team Edition for Database Professionals, muchas cosas se han arreglado. Entre ellas algunos aspectos relacionados con el deploy de nuestros proyectos de bases de datos cuando trabajamos con Team Foundation Server y con el servidor Team Build. Éste es un tema sobre el que me preguntan bastante asi que repasaré algunas de las opciones que tenemos para lograr que nuestro deploy sea satisfactorio. El siguiente listado recoge algunos de los puntos que tenemos que tener en cuenta para trabajar con Visual Studio Team Edition for Database Professionals

 

1. Nuevo Schema para los proyectos de Base de Datos

Una vez instalado el Service Release 1 para Visual Studio Team Edition for Database Professionals cuando abrás nuevamente un proyecto de bases de datos, el mismo se actualizará a la nueva versión modificando las propiedades del mismo. Esto significa que todas las personas que trabajen con este proyecto deben actualizar a SR1.

 

2. Nuevas propiedades para los proyectos de Base de Datos

Los nuevos proyectos poseerán nuevas propiedades con las que podremos trabajar, por ejemplo en la pestaña Build, podremos ver algunos campos nuevos para la base de datos de detinos donde queremos hacer el deploy de nuestro proyecto.

Sin embargo, estos datos que vemos aquí no quedan reflejados en el archivo de proyecto. Debemos asegurarnos que los campos Target connection, Target database name y Default location for target database files posean información para poder procesar nuestro proyecto. Lamentablemente Visual Studio Team Edition for Database Professionals no guarda estos valores correctamente en el archivo de proyecto por lo que debemos revisar los valores del mismo.

Para esto debemos editar el archivo de nuestro proyecto (MyProyect.dbproj) y dentro del mismo verificar los valores de los elementos <TargetConnectionString>, <TargetDatabase> y <DefaultDataPath>. El siguiente ejemplo muestra la configuración para el modo test de un proyecto de prueba donde podemos ver los 2 primeros elementos con los valores modificados.

<PropertyGroup Condition=" '$(Configuration)' == 'Test' "> <AutoGenerateBuildScriptName>False</AutoGenerateBuildScriptName> <BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName> <TargetConnectionString>SERVER=ElServerDelBruno; Database=dbTestDeploy; User Id=ElAdministratorDelBruno; Password=LaPasswordDelAdministratorDelBruno</TargetConnectionString> <TargetDatabase>dbTestDeploy</TargetDatabase> <DeploymentCollationPreference>None</DeploymentCollationPreference> <AlwaysCreateNewDatabase>true</AlwaysCreateNewDatabase> <GenerateDropsIfNotInProject>False</GenerateDropsIfNotInProject> <BlockIncrementalDeploymentIfDataLoss>True</BlockIncrementalDeploymentIfDataLoss> <TreatWarningsAsErrors>False</TreatWarningsAsErrors> <PerformDatabaseBackup>False</PerformDatabaseBackup> <SingleUserMode>False</SingleUserMode> <UseFuzzyMatchForColumns>False</UseFuzzyMatchForColumns> <SuppressWarnings></SuppressWarnings> <OutputPath>.\Test\</OutputPath> </PropertyGroup>

 

Para probar este ejemplo, y como tengo seleccionada la opción <AlwaysCreateNewDatabase>, simplemente borro la base de datos y compilo el proyecto. La nueva base de datos dbTestDeploy se debe crear exitosamente en el servidor seleccionado.

 

3. Integrando la compilación en TFS

Este es un punto muy delicado y donde pienso que Visual Studio Team Edition for Database Professionals tiene que madurar mucho todavía. Si nuestro proyecto de base de datos forma parte de una solución y hemos decido que la misma se compile en nuestro servidor de compilación, debemos tener en cuenta lo siguiente:

  1. Además de Visual Studio 2005, Visual Studio Team Edition for Database Professionals y Service Release 1 deben estar instalados en el servidor de Build.
  2. Es necesaria una instancia de Microsoft SQL Server 2005 o Microsoft SQL Server 2005 Express, en nuestro servidor de compilación para que Visual Studio Team Edition for Database Professionals pueda trabajar correctamente y crear los proyectos en tiempo de diseño.
  3. El siguiente error nos dice que el usuario con el que está ejecutándose el servicio no tiene configurada correctamente las opciones para Visual Studio Team Edition for Database Professionals
    MSBUILD : Build error TSD158: An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)


  4. Para configurar estas opciones, es necesario abrir una sesión con el usuario que ejecuta el servicio, iniciar Visual Studio 2005 y verificar en las opciones la configuración para Visual Studio Team Edition for Database Professionals. Para esto desde el menu Tools // Options, debemos revisar la siguiente configuración, y es necesario recomendable crear un proyecto de base de datos desde este perfil para asegurarnos que funciona correctamente.



  5. Si después de configurar el usuario del servicio, el mismo sigue dando un error, es posible realizar esta configuración "a mano" agregando una tarea específica en nuestro proyecto de MSBuild:
    <Target Name="ConfigDBPro"> <Exec Command="REG ADD HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\DBPro\DialogPage\Microsoft.VisualStudio.TeamSystem.Data.DBProject.Settings.DataConnectionOptionsSettings /v DefaultSqlServerName /d scratch2k5"/> <Message Text="Configured registry entry for $(USERNAME)" /> </Target> </Project>


  6. Si esto tampoco funciona, es recomendable revisar si el usuario de dominio que ejecuta el servicio tiene los permisos recomendables dentro de la instancia de Microsoft SQL Server 2005 donde se ejecuta el servidor de compilación. Si no están definidos estos permisos, es recomendable asignar este usuario al grupo de SQL Server.

     

 

4. Realizando el despliegue desde TFS

Esta es la parte mas simple (¿?¿?), si hemos configurado nuestro proyecto para que haga un deploy automático de la base de datos; y queremos que este proceso se realice automáticamente desde nuestro servidor de compilación, estas son algunas opción para lograrlo.

 

  1. Agregar un nuevo target a nuestro proyecto de compilación en el evento AfterDropBuild, con una tarea del tipo MsBuild, donde indicamos la ruta de nuestro proyecto de base de datos y especificamos la configuración y el tipo de acción [Deploy].
    <Target Name="AfterDropBuild"> <MSBuild Projects="$(SolutionRoot)\SolutionName\ProjectName\dbTestDeploy.dbproj" Properties="Configuration=Test;OutDir=$(SolutionRoot)\..\binaries\Default\" Targets="Deploy" /> <Message Text="Deploy completed from $(USERNAME)" /> </Target>


  2. Como última opción, podemos invocar a la herramienta SQLCMD para que ejecute el script que ha generado la compilación de nuestro proyecto. Para esto agregamos un nuevo target a nuestro proyecto de compilación en el evento AfterDropBuild con la siguiente información
    <Target Name="AfterDropBuild"> <Exec Command="sqlcmd.exe -S ElServerDelBruno -i $(DropLocation)\$(BuildNumber)\Test\dbTestDeploy.sql -o $(DropLocation)\$(BuildNumber)\Test\dbTestDeploy.log"/> </Target>


    Esta opción no es la mas agradable, pero cumple con la tarea requerida y realiza el despliegue de la base de datos.

5. Conclusión

Desde las primeras CTPs Visual Studio Team Edition for Database Professionals ha madurado mucho y creo que se ha consolidado como un perfil indispensable dentro del ciclo de vida de desarrollo. Lamentablemente, todavía hoy no es lo suficientemente configurable como otros productos, como para poder integrarlo tan fácilmente en un proyecto donde se aplique Integración Continua o alguna aproximación a las compilaciones automáticas. Es necesario un poco de paciencia, MSBuild y notepad para lograrlo.

Con la llegada de Microsoft Visual Studio 2008 veremos un perfil para DB más potente y seguramente este tipo de detalles serán solucionados. Mientras tanto cada vez que veo la siguiente imagen me lleno de alegría:

 

 

Referencias

Recomendable leer un poco en:

 

 

Saludos @ Lisboa

El Bruno

Crossposting from ElBruno.com

Buenas

si tienes que desarrollar aplicaciones con Visual Studio 2005 para Windows Vista, seguramente te has cruzado con algunos detalles a tener en cuenta por el User Account Control. Una de las soluciones a este problema es trabajar con los manifiestos de aplicaciones .Net, pudiendo encajar (embed) los mismos dentro de la aplicación. De esta manera, Windows Vista detecta nuestra identidad y sabe como reaccionar frente a nuestras acciones. Para un manifiesto simplemente agregamos la siguiente instruccion al evento PostBuild de nuestra aplicación:

"$(DevEnvDir)..\..\Common7\Tools\Bin\mt.exe" -manifest "$(ProjectDir)$(TargetName).exe.manifest" –outputresource:"$(TargetDir)$(TargetFileName)";#1

El problema, es que esta instrucción no es muy descriptiva y el mantenimiento de la misma suele ser bastante tedioso.

 

Por suerte Microsoft Visual Studio 2008 nos facilita mucho más el desarrollo cuando necesitamos ejecutar este tipo de acciones, y la siguiente imagen de las propiedades de un proyecto habla por si sola:

 

¿Y qué sucede si hemos agregado un manifest específico a nuestra aplicación? pues que lo veremos como el archivo a embeber dentro del proyecto en la lista de opciones

 

Saludos @ Lisboa

El Bruno

PD: es cierto el proyecto es de C#, pero sigo probando 100% VB en Microsoft Visual Studio 2008 !!!

Crossposting from ElBruno.com
Publicado 29/8/2007 11:40 por El Bruno | con no comments
Archivado en: ,

Buenas

cuando apenas llegué a España, en febrero del 2005, lo primero que hice (creo que fue a los 2 días de llegar) fue ir a una charla en las oficinas de Microsoft Madrid, donde David Carmona y nuestros amigos de Ilitia mostraban las primeras virtudes de Visual Studio 2005. (fue la primera vez que vi a Miguel Jimenez, aunque luego conocería a ambos 2 años después CodeCamp de por medio).

Si bien conocía el producto de probar las betas, no pude dejar de pasar una pregunta para un empleado de Microsoft (David) sobre esta versión, creo que fue algo así:

- veo que .Net Fwk 2.0 trae muchos nuevos controles windows ¿ que pasa con las empresas que viven de desarrollar y extender controles Windows, por ejemplo Infragistics ?

- Paralelamente al desarrollo de .Net Fwk 2.0, estas empresas han empezado a desarrollar y evolucionar sus productos para adaptarlos a las necesidades que no cubre el nuevo Fwk.

Como siempre, David tuvo razón; desde hace 2 años, Infragistics posee una de las mejores suite de controles .net del mercado: NetAdvantage.

 

En estos días, mientras esperamos a Microsoft Visual Studio 2008, la gente de Infragistics no se ha quedado quieta y está trabajando en nuevas suites de controles para WPF, por ejemplo (algo de esto pudimos ver en el TechEd) y en un proyecto muy interesante llamado Aikido (thanks Steve fo the guidance), aquí tengo que detenerme y ponerme a postear (esto pensé cuando me explicaron de que iba).

Aikido es la evolución de la suite Web de Infragistics, pero en este momento y con las tecnologías emergentes que trae Microsoft Visual Studio 2008. es un momento ideal para rediseñarse. Ademas de soportar las nuevas características de AJAX (cosa que hace desde el 2001 esta suite), rediseñar el modelo de objetos e integrarse completamente en Visual Studio, esta suite será compatible con Silverlight !!! Para los que usamos los productos de Infragistics esta es una muy buena noticia ...

Aunque como una demo vale mas que mil palabras (y este post tiene XXX palabras), mejor echarle un vistazo en http://labs.infragistics.com/silverlight/

 

Saludos @ Lisboa

El Bruno

Crossposting from ElBruno.com
Publicado 28/8/2007 23:42 por El Bruno | con no comments
Archivado en: ,

Buenas, si

  • ¿ tienes poca paciencia con las piecitas de tu LEGO ?
  • ¿ nunca encuentras ese engranaje negro entre todos los "palitos" grises ?
  • ¿ sigues pensando como armar un Optimus Prime con tu Lego de Harry Potter ?

gracias al amigo Damian me he encontrado con el interesantísimo Lego Digital Designer, un software free que nos permite armar modelos "virtuales" con las piezas del Lego. Hay personas que no entienden muy bien que ventajas posee este diseñador digital, y yo les digo:

tomen los tiempos entre poner y sacar una pieza del lego; y hacer un UNDO o REDO en LEGO Digital Designer

Listo se vende solo :D ... Además si eres de esas personas que aman el oscuro claro mundo de Apple, también puedes descargarte una versión para MAC.

 

 

Saludos @ Lisboa

El Bruno

PD:  no hay muchos modelos publicados en la web, la busqueda http://www.google.com/search?hl=en&q=lego+filetype%3Alxf solo retorna 3 resultados.

Crossposting from ElBruno.com

Buenas

durante este período de vacaciones mucha gente se plantea dar un cambio en su vida. Este cambio puede ser algo tan simple como cambiar de trabajo, o algo más profundo como tirarse 4 semanas seguidas en un barcito en la playa olvidándose de todo lo que pasa a su alrededor y reflexionar sobre los conocimientos que te ha  dejado la película de Los Simpsons. En ambos casos, creo que hay que pensar un poco más al respecto.

Por ejemplo, cuando paso por la oficina de Avanade, usualmente me toca hacer alguna que otra entrevistas técnica. Cuando la primera pregunta que escucho es ¿ cuanto paga Avanade €€€ ?, se que la cosa va mal. Me explico un poco, no está mal preocuparse por el dinero, ni mucho menos esto lo dice un hipotecado, futuro padre, propietario de un Lego Mindstorms, flamante conductor, etc pero sin embargo creo que la búsqueda de trabajo tiene que apuntar a objetivos más altos.

Siempre he pensado que cuando durante un mes entero, no tenga ganas de ir a trabajar, me despierte de mala gana y con mal humor por el trabajo; simplemente renuncio y me pongo a buscar otro trabajo. En mi caso, el trabajo tiene que ser algo que te divierta, que diariamente te ofrezca nuevos desafios, que no se convierta en una tarea rutinaria que de a poco te consuma el cerebro, y por suerte; la consultoría me ofrece estos desafíos. Avanade como otras consultoras tiene sus ventajas y sus contras, la gente va y viene; pero me mantiene muy ocupado, demasiado entretenido y al día.

Es por eso que si estás pensando en cambiar de trabajo, puedes hacerte la siguiente pregunta ¿es posible lograr mis objetivos en mi trabajo actual? y también ¿ estoy buscando más dinero o algún tipo de desafío para mi carrera profesional ? estos puntos son fundamentales para acertar con un nuevo trabajo (lo dice alguien que sólo ha trabajado profesionalmente en 2 empresas diferentes en toda su vida).

Y, para todos aquellos que se van: mucha suerte y para que los que llegan: bienvenidos !!!

 

Saludos @ Lisboa

El Bruno

PD: obviamente si alquien está interesado en mi actual empresa, no dude en contactar conmigo, yo le comentaré (informalmente) un poco como son las cosas por aquí no en Lisboa desde un punto de vista 100% developer/tester/pm/etc ... :D

Crossposting from ElBruno.com

Buenas

siguiendo con las experiencias con DSL, y tratando de ser más amigable con mi usuario final, hoy mostraré algo que se les pasó a los chicos de Redmond es muy importante y visualmente impactante: las cajas de texto multidioma. Pues si, parece un chiste, pero lamentablemente los Shapes que traen de fábrica las Domain Specific Language Tools para Visual Studio 2005 no permiten de una forma fácil y rápida la configuración para que los mismos soporten textos multilinea.

 

Introducción

Pero como siempre la solución es muy simple y partiendo del ejemplo que dejé en este post, donde teníamos un modelo con Users y Comments, modificaré a los comentarios para soporten textos multilínea.

Esta es la vista original de nuestro modelo

 

Si editamos uno de los comentarios y agregamos el siguiente texto:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque fringilla augue. Nulla vehicula est vitae augue. Aliquam in ipsum eget tellus iaculis consequat. Sed tristique congue enim. Pellentesque dictum interdum sem. Ut varius neque. Ut rutrum accumsan ligula. Nunc euismod urna vel lorem tempor feugiat. Fusce in nibh. Nam nec augue. Nulla aliquam lectus sit amet neque. Sed vestibulum consequat nunc. Curabitur a magna. Aenean hendrerit. Nulla sed nibh. Curabitur lectus libero, ultrices sed, sodales vitae, imperdiet in, risus. Suspendisse potenti. Integer et sapien. In ultrices mattis massa.

Veremos que nuestro comentario muestra en una sola línea todo el texto que hemos configurado dentro del mismo:

Solución

La solución a este problema consiste en extender la funcionalidad por defecto que trae un Shape en las Domain Specific Language Tools, sobreescribir la funcion InitializeDecorators() modificando uno de los elementos TextField que contiene el mismo y configurandolo para que soporte textos multilínea.

 

1 .  Seleccionar el Shape Comment y modificar la propiedad Generate Double Derived = True.

Nota: esta propiedad permite que podamos sobreescribir la función InitializeDecorators(), entre otras cosas.

 

2. Agregamos una nueva clase a nuestro proyecto llamada Shapes.partial.cs.

 

3. Dentro de esta clase agregamos el siguiente código, donde obtengo el TextField correspondiente al comentario, habilito el modo MultipleLines del mismo y lo posiciono dentro del Shape del comentario (parent) respetando los espacios del título y del ícono.

1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using Microsoft.VisualStudio.Modeling.Diagrams; 5 6 namespace ElBruno.Dsl15 7 { 8 9 public partial class CommentShape 10 { 11 protected override void InitializeDecorators(IList<ShapeField> shapeFields, IList<Decorator> decorators) 12 { 13 base.InitializeDecorators(shapeFields, decorators); 14 TextField commentField = (TextField)ShapeElement.FindShapeField(shapeFields, "Comment"); 15 16 // disable autosize and enable multiline 17 commentField.DefaultAutoSize = false; 18 commentField.DefaultMultipleLine = true; 19 20 // clear existing anchors, set up custom anchoring below. 21 commentField.AnchoringBehavior.Clear(); 22 commentField.AnchoringBehavior.SetTopAnchor(AnchoringBehavior.Edge.Top, 0.4); // bigger on top to display shape title and icon 23 commentField.AnchoringBehavior.SetLeftAnchor(AnchoringBehavior.Edge.Left, 0.1); 24 commentField.AnchoringBehavior.SetRightAnchor(AnchoringBehavior.Edge.Right, 0.1); 25 commentField.AnchoringBehavior.SetBottomAnchor(AnchoringBehavior.Edge.Bottom, 0.1); 26 } 27 } 28 29 } 30

 

4. Compilamos (generando previamente el código desde el Solution Explorer) y en modo debug podremos ver que nuestros comentarios son multilinea y ademas se acomodan al tamaño del Shape del comentario. Es interesante editar el texto dentro del comentario para ver como el espacio de edición se acomoda a los márgenes que hemos definido en el código.

 

 

Y para finalizar un video con el funcionamiento del mismo y obviamente el código de ejemplo descargable desde aquí (gracias Geeks.ms).

 


Video: DSL Tools - MultipleLine Shape

 

 

 

Saludos @ Lisboa again

El Bruno

Crossposting from ElBruno.com

Buenas

nuestros amigos de Microsoft Patterns and Practices ya están pensando en la nueva versión de Enterprise Library para Microsoft Visual Studio 2008. El objetivo es brindar la misma funcionalidad que actualmente existe en la versión 3.1 montado sobre Microsoft Visual Studio 2008, pero para obtener un poco mas de feedback de la comunidad nos anima a participar en esta encuesta -> http://www.zoomerang.com/survey.zgi?p=WEB226STCU2528

 

Fuente: http://blogs.msdn.com/agile/archive/2007/08/24/planning-the-next-release-of-enterprise-library.aspx

 

Saludos @ Wii World

El Bruno

Crossposting from ElBruno.com

 

Buenas

siempre me ha gustado ser muy cuidadoso en los detalles, hay pequeños detalles que marcan la diferencia en un producto. Un buen lugar para personalizar y dar un poco más de vida a un proyecto de Domain Specific Language Tools es en el DSL Explorer. Si partimos del ejemplo del comentario que posteé hace unos días veremos que el mismo representa los elementos y los comentarios de nuestro diagrama en un TreeView como muestra la siguiente figura:

 

A continuación vamos a modificar algunas de las propiedades de nuestro proyecto para modificar la apariencia del DSL Explorer.

  1. Agregar una nueva imagen al directorio "Resources" del proyecto, con un tamaño de 16x16 pixels.
  2. En el panel DSL Explorer, seleccionar el nodo Explorer Behavior y modificar las siguientes propiedades
    1. Name: DslSampleComment
    2. Title: Dsl Sample Comment
  3. Sobre el nodo Explorer Behavior desplegar el menú contextual y seleccionar la opción Add New ExplorerNodeSettings. Esta acción agrega un nuevo nodo que nos permite definir una personalización especial para alguna de las clases de nuestro modelo.
  4. Seleccionar el nuevo nodo ExplorerNodeSettings y modificar las siguientes propiedades
    1. Class: Comment
    2. Icon To Display: Resources\Comment 16x16.png
  5. Generamos el código desde el Solution Explorer y compilamos la solucion.
    Nuestro nuevo DSL Explorer muestra los nodos que representan a los comentarios con la imagen que hemos asignado en la personalización:

 

Si modificamos un poco más el modelo, cambiamos los ExampleElements por Users y personalizamos un poco más el modelo lograremos un modelo como el siguiente:

 

El código fuente del ejemplo se puede descargar desde aquí.

 

Saludos y happy coding

El Bruno

Crossposting from ElBruno.com

Buenas

ya sé que este es un proceso muy conocido y utilizado desde hace mucho tiempo. Pero como soy cortito esta es una de las cosillas que siempre me olvido como se hacen, asi que este post me servirá de recordatorio. Por ejemplo, quiero que cada vez que se compile un proyecto, se copien los assemblies generados al directorio de ejecución de Visual Studio 2005 (cuidado con esto !!!). Para lograr esto debemos seguir los siguientes pasos:

 

  1. Seleccionar el proyecto con el que y ver las propiedades del mismo.
  2. Dentro de las propiedades seleccionar Build Events.
  3. En la sección Post Build Events command line presionar Edit Post-build.
  4. Presionar Macros para ver el listado de las variables con las que podemos trabajar.
  5. Utilizando el comando copy, ingresar copy "$(TargetDir)" "$(DevEnvDir)" >Null.
    Donde $(TargetDir) representa el directorio de compilación, y $(DevEnvDir) representa el directorio donde se ejecuta Visual Studio.

 

 

De esta forma cada vez que se compile el proyecto se copiará todo el contenido del directorio de compilación al directorio de Visual Studio 2005, usualmente c:\Program Files\Microsoft Visual Studio 8\Common7\IDE\. Si por algún motivo no se pueden copiar los archivos, en el panel de Errores veremos un nuevo item con la descripción del error que ha ocurrido.

Post apuntado para futuras lagunas mentales ... !!!

 

Saludos @ Development Enviroment

El Bruno

Crossposting from ElBruno.com
Publicado 23/8/2007 13:41 por El Bruno | con no comments
Archivado en: ,

Buenas

hoy un pequeño post con un ejemplo de una tarea muy trivial cuando trabajamos con Domain Specific Language Tools.

Requerimientos concretos:

- crear nuevas entidades-
- relacionar las mismas con otras entidades
- crear los elementos gráficos para representar las mismas

En este caso he pensado en agregar un nuevo shape que represente un Comentario y que el mismo pueda ser relacionado con entidades ya existentes en el modelo.

 

Tutorial

Estos son los pasos necesarios para realizar esta tarea: 

1. Para comenzar crearemos un nuevo proyecto del tipo Other Project Types // Extensibility // Domain Specific Language Designer, basado en el template Minimal Language. En este caso lo he llamado Dsl15.
Nota: Un ejemplo completo de estos pasos se puede repasar en este post, desde el paso 1 al paso 9.

 

2. El proyecto que crea el asistente, consiste en un modelo con una clase principal ExampleModel que esta relacionada con otra clase ExampleElement. Todos los modelos deben poseer solo una clase root,que engloba a los demás elementos del modelo. Además crea una relación entre ExampleElement con otros ExampleElement.

Para representar nuestro comentario agregamos una nueva Domain Class al modelo. Para esto, desde la Toolbox arrastramos una instancia de Named Domain Class al diagrama.

Nota: La herramientas Domain ClassNamed Domain Class agregan ambas una DomainClass a nuestro modelo; pero la 2da agrega además dentro de la clase una domain property que identifica univocamente a la clase entre las instancias de la misma.

3. Renombramos la clase de DomainClass1 a Comment y la Domain Property Name a Comment Text, esta propiedad será la encargada de almacenar el string que representará a nuestro comentario.

 

4. Utilizando la herramienta Embedding Relationship conectamos la clase ExampleModel a nuestra clase Comment. Este tipo de relación indica que la clase hija (Comment) estará contenida dentro de la definición de la clase padre (ExampleModel). Nuestro diagrama debe quedar como la siguiente imagen.

Nota: si queremos visualizar todo el diagrama completo como si fuese un árbol, y no ver la clase Comment duplicada, seleccionamos la que está relacionada, desplegamos el menú contextual y seleccionamos la opción Bring Tree Here.

 

5. Uno de los objetivos del ejemplo es poder relacionar los comentarios con las clases ExampleElement. Para esto seleccionamos la herramienta Reference Relationship y conectamos la clase ExampleElement con la clase Comment. Nuestro diagrama debe quedar como la siguiente imagen:

 

6. Una vez creados los componentes de nuestro modelo debemos crear los elementos que representarán gráficamente a los mismos y a sus relaciones. Dentro de la plantilla Minimal Language, tenemos las siguientes opciones Geometry Shape, Compartment Shape e Image Shape. Para nuestro comentario utilizaremos un Geometry Shape, que permite representar una figura geometrica con contenido de texto dentro del mismo. Utilizando la herramienta GeometryShape agregamos una nueva Shape al diagrama, este tipo de componentes se agregan en la sección Diagram Elements del Diagrama.

 

7. Renombramos el Shape de GeometryShape1 a CommentShape y modificamos algunas propiedades para personalizar el Look and Feel del Comentario.

Fill Color: 255, 255, 192

Fill Gradient Mode: Vertical

Geometry: Rounded Rectangle

Outline Color: 255, 255, 128

Outline Thickness: 0.01

 

8. A continuación personalizaremos el contenido del Shape para que dentro del mismo posea un título y un contenido que represente el comentario. Para esto seleccionamos el Shape y desplegando el menú contextual seleccionamos la opción Add // Text Decorator, renombramos la propiedad por Title y modificamos las siguientes propiedades:

Default Text: Comment

Font Style: Bold

Name: Title

Position: InnerTopCenter

 

9. Agregamos un nuevo Text Decorator y modificamos las siguientes propiedades:

Default Text:

Font Size: 7

Name: Comment

Position: Center

Nuestro CommentShape debe quedar como en la siguiente imagen.

 

9. Es necesario relacionar la clase Comment con el shape CommentShape para que la clase se represente con la figura que hemos creado. Dentro del panel DSL Explorer, seleccionamos el nodo Diagram, desplegamos el menu contextual y seleccionamos la opcion Add New Shape Map. Dentro del formulario de configuración, seleccionamos la clase Comment y el Shape CommentShape para el mapeo entre ambos.

 

 

10. Este mapeo crea una nueva conexión entre el shape y la clase. Aunque todavía es necesario relacionar la propiedad CommentText de la clase Comment con el Text Decorator Comment del shape CommentShape, para que nuestros cambios en el modo gráfico del comentario se reflejen dentro del modelo que hemos diseñado.

Seleccionamos el mapeo entre ambos elementos y seleccionamos el panel DSL Details. Sobre la pestaña Decorator Maps, marcamos el check sobre el decorator Comment y en el Combo Display Property seleccionamos la propiedad Name.

 

11. Otro componente gráfico que debemos agregar es la linea que una a los comentarios con los elementos del diagrama. Para esto desde la Toolbox agregamos un nuevo elemento del tipo Connector. Renombramos al mismo de Connector1 a ElementCommentConnector y modificamos las siguientes propiedades.

Color: 192, 192, 0

Name: ElementCommentConnector

Thickness: 0.01

 

12. A continuación mapeamos este conector a la relacion ExampleElementReferencescomments que conecta los elementos con los comentarios. Dentro del panel DSL Explorer, seleccionamos el nodo Diagram, desplegamos el menu contextual y seleccionamos la opcion Add New ConnectorMap. Dentro del formulario de configuración, seleccionamos la relación ExampleElementReferencescomments y el Conector ConnectorElementToComment para el mapeo. Debemos ver una nueva línea en nuestro modelo que representa la relación entre ambos.

 

13. Finalmente necesitamos crear las herramientas en la Toolbox que permitirán crear nuevos comentarios y asociarlos a elementos.
Dentro del panel DSL Explorer, seleccionamos el nodo Editor // Toolbox Tabs // Dsl15, desplegamos el menu contextual y seleccionamos la opción Add New Connection Tool. Dentro del nodo Tools por debajo de Dsl15 veremos que se ha creado una nueva herramienta llamada ConnectionTool1 que permite crear relaciones entre elementos. Seleccionando la misma modificamos las siguientes propiedades:

Caption: Reference Comment

Connection Builder: ExampleElementReferencescommentsBuilder

Name: ReferenceComment

ToolBox Icon: Resources\ExampleConnectorToolBitmap.bmp

 

14. Desplegamos nuevamente el menu contextual sobre Dsl15 y seleccionamos la opción Add New Element Tool y veremos que se ha creado una nueva herramienta llamada ElementTool1. Esta herramienta permite crear instancias de las clases de nuestro modelo. Seleccionando la herramienta modificamos las siguientes propiedades:

Caption: Comment

Class: Comment

Name: Comment

Toolbox Icon: Resources\ExampleShapeToolBitmap.bmp

 

15. El modelo y los componetes que lo componen está finalizado. Para probar el modelo primero debemos generar el código que compone el mismo, para esto desde el panel Solution Explorer presionamos el botón Transform All Templates. Una vez que se ha finalizado la generación de código podemos compilar y presionando F5 probar nuestro modelo.
Este es un ejemplo de Visual Studio en Modo Debugging con el modelo y los comentarios que hemos creado.

 

Conclusión

Pues bien que les sea útil y espero que sirva de referencia para aquellos que quieran comenzar a probar con las Domain Specific Language Tools. La creación de los modelos no es una tarea muy complicada pero si es necesario tener un en claro el dominio sobre el que trabajaremos, antes de comenzar. En futuros post, modificaré el shape de Comment para que sea multilínea, personalizaré los nosos del DSL Explorer y otras customizaciones más.

A continuación pequeño video que demuestra las capacidaes del mismo y el código de ejemplo se puede descargar desde aquí (gracias Geeks.ms).

 


Video: DSL - Comment Sample

 

Saludos @ Home

El Bruno

Crossposting from ElBruno.com
Publicado 22/8/2007 22:54 por El Bruno | con no comments

Buenas

hoy tuve una charla interesante con un compañero que me hizo llegar a diferentes conclusiones. Una de ellas es la siguiente y trataré de explicarla en no más de 20 líneas:

  1. Visual Studio .Net.Revolucionario = True
    Allá por el año 2000, aquellos que trabajábamos con ASP, Visual Basic 6 y SQL Server, cuando tuvimos en nuestras manos la primera Alfa de Visual Studio dijimos cosas como:
        - si le pones inherits a una clase ahora hereda TODA la funcionalidad !!!
        - se pueden diseñar los webforms en modo visual !!!
    y un montón de cosas más. Por fin pudimos ir a leer esos libros de nuestros amigos de Java y empezar a traducir y a probar patterns, log4J, etc. La llegada de .Net Framework y de Visual Studio fue realmente impresionante.
  2. Visual Studio 2003.Revolucionario = False
    Ojo, sin agredir, creo que fue un paso más en la evolución de Visual Studio, el Framework 1.1 tuvo muchas cosas muy buenas, pero no hubo nada que nos deje con la boca abierta por días y días ...
  3. Visual Studio 2005.Revolucionario = True
    El Framework 2.0 estaba muy bien, con sus generics, etc, pero si hablo de Visual Studio aquí me quito el sombrero: 5 años después de la primera revolución, apareció un IDE que ... era mucho más que un IDE. Por primera Visual Studio estaba pensado para equipos de desarrollo, si bien Team Foundation Server se basa en muchas ideas de muchos productos que ya conocíamos y utilizábamos anteriormente (CruiseControl.Net, NAnt ...), fue la primera vez que podíamos gestionar el ciclo de vida COMPLETO de un proyecto desde Visual Studio. Otro impresionante más :D
  4. Visual Studio 2008.Revolucionario = False
    pues para seguir con el patrón, creo que no va a ser una gran revolución. Es cierto, podemos trabajar desde un mismo IDE con varios Frameworks, las ventajas del nuevo Team Foundation Server son muy buenas, incorpora dentro del esquema de desarrollo todas las capacidades de .Net 3.0 y 3.5; pero no lo veo como un gran salto, como un producto que nos deje boquiabiertos por días y días.
  5. Visual Studio Code Name Rosario ... = ??? 
    Ahora bien ... después de Microsoft Visual Studio 2008 si existe una revolución, nuestra forma de programar madura un poco, los nuevos lenguajes cambian; no en su sintaxis sino en el approach de la metodología de desarrollo. La nueva tendencia está muy influenciada por lenguajes dinámicos como Ruby, o Iron Python, el modelado pasa a ser una realidad y las DSLs no son un juguete para unos pocos. Creo que en Visual Studio Code Name Rosario veremos un nuevo cambio y volveremos a sentirnos como un niño cuando tiene que empezar desde cero a aprender algo nuevo ...

 

Asi que bien, a seguir probando y aprendiendo con Microsoft Visual Studio 2008 pero sin despegar los ojos del lado oscuro ya que por diferentes lados vienen un par de waves muy pero muy interesantes !!!

 

Saludos @ Ikea

El Bruno

Crossposting from ElBruno.com
Publicado 21/8/2007 19:42 por El Bruno | 4 comment(s)
Archivado en: ,

Buenas

cuando menos te lo esperas te encuentras con esas preguntas/problemas que te hacen viajar un poco en el tiempo para recordarte épocas más divertidas. Hoy me tocó volver un poco a MOSS 2007 y de repente necesite configurar un Business Data Catalog. Este punto era bastante complicado, ya que en la edicion del xml necesario para la configuración siempre me olvidaba algo.

Por suerte, pensé que después de casi un año alguien se habría currado un editor visual para las configuraciones del BDC y me encontré con la agradable sorpresa del SDK para MOSS 2007, donde ya viene incluido un editor (que creo que nació como un proyecto libre en CodePlex). Pues bien, problema solucionado.

El SDK se puede descargar desde aquí e incluye entre otras cosas:

The download file OfficeServerSDK.exe provided for the SharePoint Server 2007 SDK contains the following:

  • Compiled HTML Help files (updated with new content since RTM), OSSSDK2007.chm and WSS3sdk.chm, which contain conceptual topics, Class Library and Web Service References for SharePoint Server 2007 and Microsoft Windows SharePoint Services 3.0.
  • Code samples that relate to topics in the SDK: Business Data Catalog metadata samples, Custom Single Sign-On Provider, SampleWebService, and Custom Filter Web Parts. The sample projects use Microsoft Visual C# and Microsoft Visual Studio 2005.
  • Enterprise Content Management Starter Kit.

Also included in the SharePoint Server 2007 SDK, the Enterprise Content Management (ECM) Starter Kit is designed for solution providers, independent software vendors, value-added resellers, and other developers to learn about how to extend the new ECM features and platform in Office SharePoint Server 2007. It contains the following:
White Papers
  • 2007 Office System Digital Signatures Developers Guide
  • 2007 Office System Encryption Developers Guide
  • Information Rights Management - Pluggable Rights Management, Technical Overview
  • Importing Custom Actions into SharePoint Designer
  • Workflow Security Topics

Code Samples
  • Content Processing
    • Term Replacement Document Inspector Module
    • Document Converters (server-side custom property remover, docm-to-docx converter)
  • Records Management and Policy
    • De-Duplication Router
    • Document Integrity Verifier
    • Records Repository Web Service Console Application
    • Search, Collect, and Hold Tool
    • Default Site Policy
  • Workflow
    Note: The following workflow samples are meant to demonstrate concepts and provide a starting point for extension. They are not the same workflows that are included with Office SharePoint Server 2007.
    • Custom Reports
    • ECM Activities
    • List Item Activities
    • Hello World Sequential Workflow
    • State Based Approval Workflow
    • Modification Workflow
    • Replication and Contact Selector Workflow
    • Intersystem Purchase Order
    • Confidential Approval
    • Group Approval
    • Review Workflows
    • Collect Feedback Workflow
    • Multi-Stage Workflow
    • Server-side Collect Signatures Workflow

Visual Studio Project Templates for SharePoint Server 2007 workflow
  • SharePoint Server Sequential Workflow Library
  • SharePoint Server State Machine Workflow Library

 

Saludos @ La Finca

El Bruno

Crossposting from ElBruno.com

Buenas

luego del pequeño ejemplo que posteé ayer sobre como crear un editor personalizado para nuestros DSLs para Visual Studio 2005, mientras Heineken de por medio se lo explicaba a un amigo, me preguntó lo siguiente:  

- ¿ y cómo es que en el Visual Studio de Debugging aparece la opción de agregar al proyecto un archivo del DSL que has creado pero en el Visual Studio "común" no ? :D

 

 

Pués lo que sucede es lo siguiente:

Cuando Visual Studio abre un archivo de un determinado tipo; con extensión .cs para C#, .vb para Visual Basic, etc.; Visual Studio verifica cual es el designer apropiado para cada extensión y edita el archivo con el mismo. Esta asociación extensión <-> designer está almacenada como no podía ser de otra manera en el registro de Windows.

Sin embargo, cuando utilizamos Visual Studio en modo Debug, Visual Studio utiliza otra sección del registro de Windows para trabajar, se la conoce como Experimental Build. Esta configuración especial nos permite aislar los posibles errores que pueden afectar a Visual Studio, en un entorno controlado sobre el que podemos realizar todo el tipo de pruebas que necesitemos. Uno de los métodos para incializar esta instancia de Visual Studio en modo debug, es desde la línea de comandos con una de las opciones de incialización del archivo devenv.

 

Una forma muy simple de saber con qué comandos se está ejecutando nuestro Visual Studio es a través del Task Manager Ctrl + Shift + Esc.

 

Para más información msdn -> http://msdn2.microsoft.com/en-US/library/bb187320(vs.80).aspx

 

Saludos @ Home

El Bruno

Crossposting from ElBruno.com
Publicado 19/8/2007 22:03 por El Bruno | con no comments

Buenas

se ha liberado una nueva versión de Power Pack para Visual Basic 2005, en esta versión encontraremos entre otras cosas nuevos controles gráficos para dibujar óvalos, líneas, etc.; una librería para gestionar más facilmente nuestras impresiones (especialmente si las migramos desde VB 6.0), entre otras cosas.

El Power Pack se puede descargar desde http://www.microsoft.com/downloads/details.aspx?FamilyID=92FAA81E-E9C1-432C-8C29-813493A04ECD&displaylang=en

 

Saludos

El Bruno

Crossposting from ElBruno.com
Publicado 19/8/2007 19:51 por El Bruno | 1 comment(s)
Archivado en:

Buenas

en Avanade ha surgido un par de oportunidades más que interesantes y es por eso que desde hace un tiempo estoy tratando de refrescar mis conocimientos sobre las Domain Specific Language Tools para Visual Studio 2005. Me había contenido de postear sobre las mismas ya que no es tema muy popular, pero después de tener bastantes dolores de cabeza con las cosas más simples, comenzaré a soltar un poco de opinión sobre mis experiencias con las mismas.

Uno de los aspectos más importantes que proporciona Visual Studio 2005 cuando trabajamos con DSL, es la capacidad para la edición del mismo. La siguiente imagen muestra el editor por defecto que trae VS2005 para un DSL a partir de uno de los templates incluídos en VS:

 

Existen situaciones donde es más práctico crear otro tipo de editor para gestionar la información de nuestro modelo. Ambos editores trabajarán sobre el mismo modelo, pero sin embargo con diferentes interfaces de usuario para la edición de la información del DSL. El siguiente paso a paso demuestra como crear un DSL, y reemplazar el editor por defecto que crea Visual Studio por uno personalizado.

 

Creación de un proyecto DSL de ejemplo

1. En Visual Studio 2005 crear un nuevo proyecto de tipo Other Project Types // Extensibility // Domain-Specific Language Designer

 

2. Seleccionamos el template Minimal Language

 

3. Definimos la extensión con la que Visual Studio asociará a nuestros archivos para este dsl

 

4. Completamos el nombre del producto, la companía, el namespace por defecto y presionamos Finish

 

5. Nuestra solución de ejemplo está creada y dentro de la misma, encontraremos 2 proyectos: Dsl y DslPackage.

Nuestro proyecto principal posee el dsl con la definición que queremos crear. El template Minimal Language crea un modelo con una Domain Class principal: Example Model, relacionada con otra Domain Class llamada Example Element, que a su vez se puede relacionar con otros Example Element.

Nota: un ejemplo concreto de la potencia de las Domain Specific Language Tools; es que los proyecto de creación de DSLs aprovechan utilizan como templates plantillas DSL para la creación de las mismas, en otras palabras para crear DSLS se utilizan DSLs dentro de Visual Studio. La mejor forma de dar el ejemplo es utilizándolo @home.

 

6. Para probar nuestro proyecto, debemos compilar el mismo. Pero antes de presionar Ctrl + Shitf + B, debemos generar las plantillas de código a partir de nuestro diseño, para esto presionamos el botón Transform All Templates en el panel Solution Explorer y luego presionamos F5.

Nota: por defecto cuando creamos un proyecto se realiza la acción Transform All Templates, pero sin embargo es conveniente realizar esta acción cuando realizamos algún cambio en el DSL.

7. Nuestro proyecto de Debugging, posee una implementación del DSL con el que estamos trabajando. Y dentro del mismo podremos ver

  • en el panel Toolbox, poseemos 2 herramientas para crear nuevos elementos y para crear relaciones entre los mismos
  • el archivo Sample.dsl10 posee elementos de ejemplo creados dentro del mismo, para que veamos una representación de nuestro DSL
  • el panel DSL10 Explorer nos muestra la jerarquía de los elementos con los que estamos trabajando
  • el proyecto posee 2 archivos con la extension dsl10, que son modelos de ejemplo para nuestro proyecto

 

8. Si cerramos el archivo Sample.dsl10 y vemos el contenido del mismo en modo texto podremos ver que posee la siguiente información, que nos muestra los 2 elementos que posee el DSL y la relacion entre los mismos a partir del ExampleElement1 hacia el ExampleElement2.

<?xml version="1.0" encoding="utf-8"?> <exampleModel dslVersion="1.0.0.0" Id="cbe83dd6-007a-48dd-9c21-b0859208c1a7" xmlns="http://schemas.microsoft.com/dsltools/DSL10"> <elements> <exampleElement name="ExampleElement1"> <targets> <exampleElementMoniker name="/cbe83dd6-007a-48dd-9c21-b0859208c1a7/ExampleElement2" /> </targets> </exampleElement> <exampleElement name="ExampleElement2" /> </elements> </exampleModel>

Nota: para ver el contenido del archivo, cerramos el mismo y seleccionamos la opción Open With // Xml Editor.

 

9. Cerramos en proyecto Debugging y volvemos a la solucion original.

 

Creación del Custom Editor o visor personalizado 

10. En este momento, sobreescribiremos el visor por defecto que brinda Visual Studio por un formulario que creemos. Ya que nuestro DSL es muy simple, simplemente compuesto por elementos, es posible pensar en una visualización del mismo en una lista y en la misma agregar una serie de botones que permitan agregar, modificar y eliminar elementos.

Para esto en el proyecto DslPackage agregamos un nuevo UserControl llamado DslCustomEditor y dentro del mismo agregamos un Listbox, un TextBox y un Button, como muestra la siguiente imagen:

Nota: nuestro UserControl se ajustará como una nueva ventana de Visual Studio por lo que he ajustado los anchors de los controles para que respeten el aspecto del mismo cuando se redimensiona el UserControl.

 

11. A continuación agregamos el código necesario para completar el ListBox con los elementos del DSL, y para agregar un nuevo elemento. Además es necesario que nuestro UserControl reciba una instancia del visor original para poder gestionar desde el mismo las colecciones de objetos que maneja nuestro DSL. Este es el código final de nuestro UserControl:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using Microsoft.VisualStudio.Modeling; namespace ElBruno.DSL10 { public partial class DslCustomEditor : UserControl { private DSL10DocView dv; /// <summary> /// Initializes a new instance of the <see cref="DslCustomEditor"/> class. /// </summary> /// <param name="dv">The DocView that manages the DSL information</param> internal DslCustomEditor(DSL10DocView dv) { InitializeComponent(); this.dv = dv; } private void btnAddElement_Click(object sender, EventArgs e) { // valida el contenido de la caja de texto if (txtElement.Text.Length == 0) return; // inicializa una transaccion y agrega el nuevo elemento using (Transaction tx = this.dv.DocData.Store.TransactionManager.BeginTransaction("Agregar Elemento")) { ExampleElement newElem = new ExampleElement(this.dv.DocData.Store); newElem.Name = txtElement.Text; ExampleModel em = this.dv.DocData.RootElement as ExampleModel; em.Elements.Add(newElem); tx.Commit(); } // refresca el contenido del listbox RefreshElements(); } private void RefreshElements() { this.SuspendLayout(); // limpia el listbox lstElements.Items.Clear(); // obtiene y recorre todos los elementos del tipo <ExampleElement> foreach (ExampleElement ee in this.dv.DocData.Store.ElementDirectory.FindElements<ExampleElement>()) { lstElements.Items.Add(ee.Name); } this.ResumeLayout(); } private void DslCustomEditor_Load(object sender, EventArgs e) { RefreshElements(); } } }

 

12. Una vez que hemos finalizado nuestro editor por defecto para nuestro DSL, necesitamos eliminar el Editor que se crea por defecto en el proyecto. Para esto, dentro del proyecto Dsl, en el panel Dsl Explorer seleccionamos el nodo Editor y eliminamos el editor actual.

 

13. Una vez eliminado si grabamos o queremos compilar veremos el siguiente error:

Error 2 Dsl DSL10 has no Editor. C:\Projects\Labs2005\DSL10\Dsl\DslDefinition.dsl 0 1 Dsl

Si queremos compilar y ejecutar, también veremos una serie de errores relacionados con el hecho que no hay un editor para nuestro DSL.

 

14. Para agregar un editor personalizado, en el panel DSL Explorer desplegamos el menú contextual y seleccionamos la opción Add New Custom Editor.

 

 

15. Una vez que hemos creado el nuevo Custom Editor, seleccionamos el nodo Editor (Custom Editor) y completamos las siguientes propiedades.

File Extension: dsl 10

Root Class: ExampleModel

 

16. Como hemos cambiado parte de la información relativa al DSL necesitamos regenerar el codigo a partir del mismo desde el panel Solution Explorer y compilar la solucion nuevamente. Luego de la compilación nos encontraremos con sl siguiente error:

Error 1 'ElBruno.DSL10.DSL10DocView' does not implement inherited abstract member 'Microsoft.VisualStudio.Shell.WindowPane.Window.get' C:\Projects\Labs2005\DSL10\DslPackage\GeneratedCode\DocView.cs 20 25 DslPackage

 

17. Para solucionarlo debemos editar el archivo DslPackage // GeneratedCode // DocView.tt // DocView.cs y agregar el siguiente código:

/// <summary> /// Representa el visor personalizado para editar el contenido del DSL /// </summary> private DslCustomEditor customEditor; /// <summary> /// Gets the window associated with this window pane. /// </summary> /// <value></value> /// <returns><see cref="T:System.Windows.Forms.IWin32Window"></see>.</returns> public override System.Windows.Forms.IWin32Window Window { get { // verifica si existe una instancia del visor y la crea si es necesario if (customEditor == null) customEditor = new DslCustomEditor(this); return customEditor; } }

Nota: el archivo DocView.cs se genera automáticamente cuando seleccionamos la opción para regenerar el código, por lo que este cambio deberemos realizarlo luego de cada generación o implementarlo en una clase parcial.

 

18. Si compilamos y lanzamos el proyecto de debug veremos que aparece nuestro UserControl como el editor para los dsls y que podremos agregar informacion dentro del mismo:

 

19. Si cerramos el documento, grabando los cambios del mismo; podremos ver que dentro de la información que posee el DSL se encuentra la información que hemos editado con el Custom Editor:

<?xml version="1.0" encoding="utf-8"?> <exampleModel dslVersion="1.0.0.0" Id="cbe83dd6-007a-48dd-9c21-b0859208c1a7" xmlns="http://schemas.microsoft.com/dsltools/DSL10"> <elements> <exampleElement name="ExampleElement1"> <targets> <exampleElementMoniker name="/cbe83dd6-007a-48dd-9c21-b0859208c1a7/ExampleElement2" /> </targets> </exampleElement> <exampleElement name="ExampleElement2" /> <exampleElement name="Nuevo Elemento" /> <exampleElement name="Otro Elemento Mas" /> <exampleElement name="Mas Elementos" /> </elements> </exampleModel>

 

Conclusión

Existe un proyecto en CodePlex "DSL Editor Powertoy" que nos permite agilizar muy poco el proceso de cambiar los editores por defecto para nuestros DSL. Pero creo que es interesante conocer un poco más en detalle como se realiza este tipo de trabajo ya que cuando los DSLs comienzan a madurar, es muy probable que necesitemos saltar de una interfaz visual o gráfica a una más potente basada en listas, treeviews, etc.

El ejemplo completo se puede bajar desde aquí (gracias Geeks.ms una vez más).

 

Por ahora es todo ... mañana un poco sobre como funciona el IDE en modo debugging

 

Saludos

El Bruno

Crossposting from ElBruno.com
Publicado 18/8/2007 15:46 por El Bruno | con no comments
Archivado en: ,

Buenas

los que me conocen saben que soy un fanático de las aplicaciones para Office. Creo que Microsoft Office 2007 es una plataforma increíble para el desarrollo de aplicaciones, y estoy completamente seguro que muchas de las aplicaciones que se crean para las organizaciones, podrían aprovechar las ventajas de Microsoft Office 2007 y, de esta forma, acortar los tiempos de desarrollo y brindarle una mejor experiencia al usuario.

Estos dos puntos son importantes, ya que por ejemplo, teniendo las capacidades para el procesamiento de informacion que posee Microsoft Excel es muy simple aprovechar las mismas para realizar un pequeño sistema de Business Intelligence o de análisis de datos. Además nos guste o no a los clientes les encanta Microsoft Excel. He visto hojas de cálculo lo suficientemente complejas como para ser casi una aplicación. Deberíamos aprovechar el conocimiento que poseen nuestros clientes/usuarios conocen y de esta manera aprovechar las virtudes de Microsoft Office 2007 para agregar sobre esta base nuestras aplicaciones.

 

VSTO para Visual Studio 2008

Con la llegada de Microsoft Visual Studio 2008, no sólo actualizamos una nueva versión de .Net Framework, sino que también actualizamos una nueva version de Visual Studio Tools for Office (VSTO). VSTO es un conjunto de librerías que permiten realizar desarrollos en .Net para interactuar con las herramientas y con la plataforma Microsoft Office 2007 y Microsoft Office 2003.

En esta versión se tienen en cuenta algunos de los puntos más importantes que echábamos en falta con la versión actual. No escribiré sobre todas las novedades porque hace un tiempo que los chicos de Microsoft no se pagan unas cañas para hacerlo no las conozco a todas y no creo que me alcance un solo post; pero reseñaré las 4 o 5 que más me han llamado la atención:

 

Diseñador Visual para las Ribbons

Además del clásico archivo Xml con la definición de la Ribbon, con los elementos de la misma, ahora tenemos un diseñador visual que genera el código apropiado para implementar nuestro diseño. Un dato importante es que cómo, en este caso la construcción de la Ribbon y de los elementos de la misma, se realizan a partir de código compilado, hay un beneficio muy importante en cuanto a la performance de la aplicación.

La siguiente imagen muestra las diferentes opciones que tenemos para crear Ribbons en un proyecto de VSTO.

 

Una vez agregado un item del tipo Ribbon (Visual Designer) podremos ver dentro de Visual Studio que un nuevo archivo de código es agregado al proyecto y que el diseñador que utiliza Visual Studio para el mismo, representa una Ribbon de Microsoft Office 2007. Además, si activamos la opcion de ver todos los archivos del proyecto, podremos visualizar el archivo Ribbon1.Designer.vb donde veremos el código generado para "dibujar" la Ribbon.

 

En este ejemplo, y para demostrar mi originalidad, he agregado un botón Hello World y en el Click del mismo, muestro un MessageBox con el texto Hello World.

 

Distribución de aplicaciones con ClickOnce

Este es un punto muy importante, ya que los procedimientos de despliegue y actualización actuales para los proyectos de Visual Studio Tools for Office suelen ser un tanto complicados.

Ahora podremos publicar nuestras aplicaciones VSTO utilizando ClickOnce. Para esto simplemente desplegamos las propiedades del proyecto y en la sección Publish configuramos las opciones de publicación:

 

Nota: este sería un buen momento para mencionar las nuevas capacidades de ClickOnce. Pero es un tema que no domino mucho, asi que lo dejaré para un próximo post.

 

Nuevos tipos de Proyectos

Algo que no podía dejar de mencionar

  • los proyectos de Sharepoint dentro de la rama de Office
  • capacidad para crear AddIns para Outlook
  • capacidad para crear AddIns para Project
  • capacidad para crear AddIns para Visio
  • capacidad para crear AddIns para Infopath

 

He aquí una vista completa de las posibilidades para Microsoft Office 2007

 

 

Pues bien este es un repaso rápido por algunas de las características más importantes que estarán incluídas en la nueva versión de Visual Studio Tools for Office. Seguramente en próximos releases veremos más funcionalidades nuevas y además, mejoras sobre algunas capacidades actuales.

 

Saludos @ Home

El Bruno

Crossposting from ElBruno.com

Buenas

ayer fueron un par de ejemplos para Microsoft Visual Studio 2008, hoy un par de videos para seguir con el training de Microsoft Visual Studio 2008 en las vacaciones.

Los mismos se pueden ver desde aquí

 

Saludos @ Home

El Bruno

Crossposting from ElBruno.com

Buenas

nuevo set de herramientas adicionales para Visual Studio Team Edition for Database Professionals, en este caso un set de Power Tools, que se pueden descargar desde aquí. Este conjunto de herramientas incluyen:

  • 5 nuevos tipos de refactoring
  • un nuevo visor de dependencias
  • nuevos generadores de datos
  • 2 nuevas tareas para MSBuild

he aqui la descripción completa de features

TSQL Static Code Analysis
• Static Code Analysis - A precursor to the functionality that will be in future versions of VSTS that will allow you to perform Static Code Analysis on T-SQL code.
Refactoring
• “Move Schema” Refactoring - Allows a user to right click on an object and move it to a different but existing schema
• SP Rename Generation - Generate a new script that will contain sp_renames for all rename refactored objects that the user can then execute.
• Wildcard Expansion - Automatically expand the wildcard in a select to the appropriate columns.
• Fully-Qualified Name Support - Automatically inject fully-qualified names when absent in a script
• Refactoring extended to Dataset - Refactor into strongly typed dataset definitions
MSBuild Tasks
• Data / Schema Compare Build Tasks - MSBuild tasks that can generate scripts as if the user had run the Data / Schema compare UI
Schema View
• API Access to Schema View - Insert / Update / Delete to schema View and list schema objects and their associated files
Dependency Tool Window
• Dependency Tree - Show the dependencies ( incoming / outgoing ) for selected schema objects in a new tool window
Miscellaneous Tools
• Script Preprocessor - Expand SQLCMD variables and include files and command line version (sqlspp.exe) & an MSBuild version ( wraps the command line version )

Descarga: http://www.microsoft.com/downloads/details.aspx?FamilyID=da3f11ad-bd54-4eda-b08c-4df84df0d641&displaylang=en

 

Saludos from the swimming pool

El Bruno

Crossposting from ElBruno.com

Buenas,

para aprovechar un poco los días de piscina, cervecitas y amigos, nada mejor que un par de ejemplos para Microsoft Visual Studio 2008 de diversas tecnologías como WCF, WF, Silverlight, LINQ, etc. He aquí el listado completo:

Fuente: http://blogs.msdn.com/ccboy/archive/2007/08/12/vs-2008-beta2-samples.aspx

 

Saludos from the swimming pool

El Bruno

Crossposting from ElBruno.com

Buenas

todos los días aprendes algo nuevo y creo que entre tanto margaritas y sol en la piscina Domain Specific Languages y tanta Software Factories, me quedo con el siguiente tip para Microsoft Visual Studio 2008 y Visual Studio 2005.

Se trata de las búsquedas incrementales, una funcionalidad de Visual Studio que todavía no había utilizado a fondo. La misma se activa con la combicación de teclas Ctrl + I y veremos como el cursor cambia a el siguiente:

a partir de este momento se activa la búsqueda incremental en el editor de código donde estemos trabajando. La misma reacciona a cada tecla que presionemos y mueve el foco sobre la siguiente concidencia de la frase que estemos introduciendo. Por ejemplo, en el siguiente video, introduzco la frase "adds and" y el cursor va seleccionando primero la primera ocurrencia de "a", luego la primera ocurrencia de "ad", y asi sucesivamente:

 


Video: Visual Studio 2008 - Incremental Search

 

Saludos @ La Finca

El Bruno

Crossposting from ElBruno.com
Publicado 10/8/2007 13:45 por El Bruno | 3 comment(s)
Archivado en:
Más artículos Página siguiente >