Mostrando entradas con la etiqueta Visual Studio. Mostrar todas las entradas
Mostrando entradas con la etiqueta Visual Studio. Mostrar todas las entradas

19 de abril de 2010

Document Session Manager - Addin de Visual Studio para administrar documentos

Document Session Manager es un addin para Visual Studio 2008 que permite guardar y recuperar la lista de archivos abiertos dentro de la IDE (ej: archivos xml, archivos de código fuente, formularios winforms, etc.)

Las características de Document Session Manager (DSM de ahora en más) están inspiradas en un addon de firefox llamado Session Manager

DSM permite guardar la lista de archivos abiertos dentro de lo que es llamado una "sesión". Luego, esta sesión puede ser cargada causando que todos los documentos que pertenecen a la misma sean abiertos en la IDE. El objetivo principal de ello es ayudar al programador a focalizarse en sólo un conjunto de documentos, deshaciéndose de otros que se pudieran haber abierto durante un debugging o mientras se estaba navegando mediante el comando Go To Definition (F12) de Visual Studio (en mi experiencia, muchos archivos que quizás sólo necesitábamos para echarles un vistazo rápido, pueden llenar la IDE de Visual Studio en muy poco tiempo ;)

Una característica extra de DSM es la habilidad de mantener la lista de documentos que estaban abiertos antes de iniciar un debugging; una vez que el debugging termina, esa lista de documentos puede ser restaurada, cerrando cualquier otro documento que se hubiese abierto durante la sesión de debug. (NOTA: si se desea, esta característica puede ser desactivada en la página de opciones del addin)

El proyecto está hosteado en codeplex. Más información y capturas de pantalla se pueden encontrar en la página principal del proyecto y en el sector de documentación.

Algunas capturas...





Espero que sea útil, cualquier comentario será bienvenido!

9 de abril de 2010

Plugin de CodeRush para cerrar el archivo activo cuando se recolecta un marcador

CR_MarkerCloseOnCollect es un plugin que he desarrollado y que puede resultar útil para aquellos que, como yo, usan CodeRush como herramienta de refactor en Visual Studio.

Es un plugin muy sencillo (de hecho, está hecho con solo 5 líneas de código), cuyo propósito es cerrar el archivo activo cuando se recolecta un marcador (Marker) de CodeRush.

Hay una excepción a esta regla, ya que cuando el marcador que se recolecta pertenece al mismo archivo que actualmente está activo en la IDE de Visual Studio, el archivo no se cerrará.

Mas allá de la sencillez del plugin, creo que puede ser de bastante utilidad, ya que es muy común utilizar F12 para ir al archivo donde se encuentra la declaración de algún elemento (como puede ser una clase, interfaz, método, etc...) y luego querer volver al lugar donde se insertó el marcador, sin que nos interese mantener abierto este archivo.

El enlace para descargar el plugin y algunas capturas de pantalla se pueden encontrar en esta ubicación, dentro del proyecto DXCore Community Plugins.

Espero que sea útil, cualquier comentario será bienvenido !

18 de marzo de 2010

Asociar un schema (xsd) a los archivos de configuracion de NHibernate y Spring.net en Visual Studio

Este es el primer post de muchos otros que estarán por venir... o al menos eso espero ;)

Para romper el hielo, voy a empezar con algo sencillo, pero que puede llegar a resultar bastante útil.

En Visual Studio, si uno quiere que un determinado archivo xml se valide contra un schema y además tener disponible la funcionalidad de Intellisense, es necesario asociar el xml al xsd en cuestión. Esto se puede hacer fácilmente mediante el menú Xml\Schemas, luego se selecciona el xsd de la lista o se busca un archivo xsd en disco. Hasta ahí todo bien, el problema es que es necesario realizar esta asociación en cada xml, uno por uno, y aun peor es el hecho de que esas asociaciones quedan registradas en el archivo de opciones de usuario de la solución (.suo), así que si me llevo un proyecto a otra solución estaría perdiendo todas las asociaciones entre xml y xsd que tenia dentro del proyecto.

Este problema se puede evitar siguiendo los siguientes pasos (voy a ejemplificar usando archivos xsd de NHibernate y Spring.net, pero la solución aplica para otros casos)

Buscar la carpeta Xml\Schemas, dentro de la ruta donde fue instalado el Visual Studio, y copiar los archivos xsd que queremos asociar a nuestros xmls (por ejemplo "C:\Program files\Microsoft Visual Studio 9.0\Xml\Schemas\").

En este caso, copiamos los archivos xsd para configuración de Spring.net y los archivos xsd de configuración y de mapping de NHibernate:

spring-objects-1.3.xsd
nhibernate-configuration.xsd
nhibernate-mapping.xsd

Luego buscar el archivo Catalog.xml que, siguiendo el ejemplo anterior, debería encontrarse en "C:\Program files\Microsoft Visual Studio 9.0\Xml\Schemas\Catalog.xml" y agregar estas tres lineas dentro del tag SchemaCatalog.


<SchemaCatalog xmlns="http://schemas.microsoft.com/xsd/catalog">
...
<Schema href="%InstallRoot%/xml/schemas/nhibernate-mapping.xsd"
targetNamespace="urn:nhibernate-mapping-2.2"/>
<Schema href="%InstallRoot%/xml/schemas/nhibernate-configuration.xsd"
targetNamespace="urn:nhibernate-configuration-2.2"/>
<Schema href="%InstallRoot%/xml/schemas/spring-objects-1.3.xsd"
targetNamespace="http://www.springframework.net"/>
...
</SchemaCatalog>


Una vez hecho esto, cuando abramos un archivo xml que tenga asociado alguno de los namespaces identificados en el atributo targetNamespace, automáticamente Visual Studio nos va a asociar el schema xsd que corresponda.

Pongo como ejemplo un archivo de configuración de Spring.net, donde el namespace se asigna mediante el atributo xmlns:


<objects xmlns="http://www.springframework.net">
<object name="MyMovieLister"
type="Spring.Examples.MovieFinder.MovieLister, Spring.Examples.MovieFinder">
</object>
</objects>


Espero que sea útil, cualquier comentario será bienvenido !