lunes, 23 de agosto de 2010

CodeSnippets en Visual Studio

Hola, bueno en esta entrada quiero mostrarles un poco el como personalizar y a la vez explotar este poderoso IDE que es Visual Studio, bueno los que comienzan a utilizar VS se dan cuenta de la simplicidad que nos proporciona al escribir codigo, diseñar formularios, paginas web, manejo y conexion con bases de datos, etc. Bueno, esas caracteristicas ya vienen incorporadas a VS y una de las caracteristicas que viene desde VS 2005 es la de los code snippets, o fragmentos de código. Estos fragmentos de código son elementos que se auto-insertan en nuestro código para evitar la tarea tediosa de escribirlos una y otra vez.




Un ejemplo podria ser la definicion de un bloque for, VS ya tiene una gran cantidad de code snippets definidos, bueno estos se encuentran generalmente en este directorio: "C:\Archivos de programa\Microsoft Visual Studio 8\VC#\Snippets\3082\Visual C#". Ahora si alguien tuvo curiosidad y abrió alguno de estos archivos con extensión ".snippet" se pudo dar cuenta que son simplemente archivos XML que obedecen un namespace. Bueno, pero como auto inserto algo en mi código usando VS?. Ok, lo que hay que hacer es por ejemplo dentro de un método escribir "for" que será un bucle "for", luego Intellisense nos mostrará lo siguiente

ahora el icono que parece un trozo de papel nos indica que es un code snippet, ahora para auto-insertarlo simplemente pulsamos dos veces la tecla TAB, y tendremos algo como:
 Ahora los que estan marcados son los literales, que llegarian variables dentro de nuestro code snippet, podemos navegar y cambiar el valor de los literales con la tecla TAB y pulsamos Enter una vez hayamos terminado de editar el code snippet.

En fin un code snippet presenta la siguiente estructura:

Bueno, primero se especifica el encoding del documento xml, luego podemos poner varios codesnippets entre:

<codesnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
 ...

</codesnippets>

Pero por razones de comodidad y correcta administración de nuestros code snippets es mejor guardarlos todos en archivos separados. Bueno luego viene el code snippet propiamente dicho, que comienza con los tags :

<codesnippet format="1.0.0">
 ...

</codesnippet>

Ahora dentro de estos tags empieza la verdadera estructura del code snippet, que primeramente debe tener una cabecera o Header en el cual se define el nombre del codesnippet, autor, acceso directo, etc. Ahora dentro de los tags <snippet></snippet> podemos definir nuestros literales(variable). Por eso ponemos lo siguiente:
<Declarations>
    <Literal>
      <ID>[Nombre]</ID>
      <Default>[Valor por defecto]</Default>
      <ToolTip>[Descripcion]</ToolTip>         
    </Literal>
    <Literal>
     ...
    </Literal>
</Declarations>
Obviamente podemos definir varios literales, pero dentro de un code snippet pueden o no haber literales. Ahora el código que será autoinsertado se coloca dentro de estos tags que vienen despues de los tags de declaración:

<Code Language="CSharp">
    <![CDATA[{"Texto del codigo a ser insertado"}]]>
</Code>

Ahora si queremos hacer referencia a uno de nuestro literales definidos anteriormente lo llamamos como $[Nombre Literal]$, tambien existe una variable especial que es $end$ la cual indica en base donde la ubiquemos que el cursor del texto irá a ese lugar una vez terminemos de editar el código aut-insertado. Ahora les presento un code snippet crea metodos que no devuelven nada.
Algo como:>

public void HacerAlgo()
{
    // Algun Codigo
}


En fin el codigo del snippet es:
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Author>SergLabs</Author>
      <Title>asd</Title>
      <Keywords>
        <Keyword>asd</Keyword>
      </Keywords>
      <Description>Inserta metodo sin retorno</Description>
      <Shortcut>asd</Shortcut>
    </Header>
    <Snippet>
      <Declarations>
        <Literal>
          <ID>acceso</ID>
          <Default>public</Default>
          <ToolTip>tipo de acceso al metodo</ToolTip>
        </Literal>
        <Literal>
          <ID>nombre</ID>
          <Default>HacerAlgo</Default>
          <ToolTip>Nombre del metodo</ToolTip>
        </Literal>
      </Declarations>
      <Code Language="CSharp">
        <![CDATA[$acceso$ void $nombre$()
        {
          $end$
        }]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>
Bueno, creo que me olvide decirles donde crear estos code snippets o guardarlos, bueno para crearlos simplemente creamos un archivo XML con visual studio y luego lo guardamos este archivo con una extensión .snippet en esta direccion: %MIS_DOCUMENTOS%\Visual Studio 2005\Code Snippets\Visual C#\My Code Snippets o simplemente en el directorio donde se guardan los code snippets predeterminados de Visual Studio. Ahora ya es posible usar nuestro snippet desde VisualStudio haciendo los mismos pasos para insertar los snippets predeterminados.
Saludos.

No hay comentarios:

Publicar un comentario