Crear nuestra primera extensión para Visual Studio 2015

Publicada en Publicada en Código, Visual Studio

Compartelo con tus amigos!

Visual Studio 2015 es el IDE (Integrated Development Environment) de Microsoft para el desarrollo de sistemas, el cual presenta muchas funcionalidades que aumentan la productividad de los programadores.

Aun así, podemos vernos en la necesidad de adicionar nuevas funcionalidades, lo cual permite personalizar nuestro entorno de trabajo. Esto se logra mediante la creación de VS Extensions.

A continuación, realizaremos el desarrollo de nuestra extensión, la cual tendrá como finalidad la creación de un menú en la barra principal de Visual Studio con dos opciones incluidas:

  • La primera consistirá en insertar el texto “Perú .NET Development” seguido por la fecha y hora dentro del documento activo.
  • La segunda, en mostrar un mensaje de bienvenida que se exhibirá en una ventana.

Habiendo definido nuestros objetivos, comencemos.

Para este programa utilizaremos VS 2015 Community y lo desarrollaremos bajo C#.

En primer lugar, crearemos un proyecto del tipo VSIX Project, el cual encontraremos debajo de la carpeta Extensibility. Lo llamaremos PeruNETDevelopment.VSExtensions. (Figura 1)

 

Figura 1.

 

Luego de crear nuestro proyecto, observaremos la siguiente estructura en la ventana del explorador de soluciones. (Figura 2)

 

Figura 2.

 

A continuación, adicionaremos un nuevo elemento del tipo Visual Studio Package, al cual llamaremos VSExtensions.cs. (Figura 3)

 

Figura 3.

 

Seguidamente, adicionaremos dos nuevos elementos del tipo Custom Command, con los nombres CommandOne.cs y CommandTwo.cs. (Figura 4)

 

Figura 4.

 

Ahora, nuestra estructura del proyecto es la siguiente. (Figura 5)

 

Figura 5.

 

Después, editaremos el archivo VSExtensions.vsct y realizaremos los siguientes pasos:

  • Buscamos la sección
<GuidSymbol name="guidVSExtensionsCmdSet" value="{…}">

Que está dentro de <Symbols> y adicionamos nuestro identificador de Menú:

<IDSymbol name="TopMenu" value="0x1010" />
  • Antes de la sección <Groups> adicionaremos el siguiente código el cual nos permite definir nuestro menú.
<Menus>

<Menu guid="guidVSExtensionsCmdSet" id="TopMenu" priority="0x700" type="Menu">

<Parent guid="guidSHLMainMenu"

id="IDG_VS_MM_TOOLSADDINS" />

<Strings>

<ButtonText>PeruNETDevelopment</ButtonText>

<CommandName>PeruNETDevelopment</CommandName>

</Strings>

</Menu>

</Menus>
  • En la sección <Groups> cambiamos el tag <Parent> por lo siguiente
<Parent guid="guidVSExtensionsCmdSet" id="TopMenu" />
  • En la sección <Buttons> cambiamos el texto para que quede de la siguiente manera
<ButtonText>Insertar Perú .NET Development - Fecha</ButtonText> (Primer comando)

<ButtonText>Mostrar mensaje bienvenida</ButtonText> (Segundo comando)

 

 

 

Editaremos el archivo CommandOne.cs y reemplazaremos el evento MenuItemCallback por lo siguiente:

private void MenuItemCallback(object sender, EventArgs e)
{
var dte = ServiceProvider.GetService(typeof(DTE)) as DTE;
var obj = dte.ActiveDocument?.Object("TextDocument");
if (obj != null)
{
var doc = dte.ActiveDocument.Object("TextDocument") as TextDocument;
doc.Selection.Text = $"Perú .NET Development - {DateTime.Now.ToShortDateString()} - {DateTime.Now.ToShortTimeString()}";
}
else
{
// Show a message box to prove we were here
VsShellUtilities.ShowMessageBox(
this.ServiceProvider,
"Para usar esta opción debe estar activo algún documento.",
"Error",
OLEMSGICON.OLEMSGICON_INFO,
OLEMSGBUTTON.OLEMSGBUTTON_OK,
OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST);
}
}

Editaremos el archivo CommandTwo.cs y reemplazaremos el evento MenuItemCallback por lo siguiente:

private void MenuItemCallback(object sender, EventArgs e)
{
string message = "Perú .NET Development, te da la bienvenida";
string title = "Mensaje";

// Show a message box to prove we were here
VsShellUtilities.ShowMessageBox(
this.ServiceProvider,
message,
title,
OLEMSGICON.OLEMSGICON_INFO,
OLEMSGBUTTON.OLEMSGBUTTON_OK,
OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST);
}

El resultado de ejecutar el proyecto será el siguiente:

Se ejecutará la versión de Visual Studio – Instancia experimental mostrando el menú de nuestra extensión: (Figura 6)

 

 

Figura 6.

 

Al ejecutar la primera opción: Insertar Perú .NET Development – Fecha y no exista un documento activo, nos mostrará la siguiente pantalla: (Figura 7)

 

Figura 7.

 

En el caso de tener un documento activo, el resultado será el siguiente: (Figura 8)

 

Figura 8.

 

Al ejecutar la segunda opción: Mostrar mensaje de bienvenida, nos mostrará la siguiente pantalla. (Figura 9)

Figura 9.

 

Esto es solo un inicio para motivar a los lectores a investigar y crear sus propias extensiones.

Saludos,

Victor Bocanegra

 

Compartelo con tus amigos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *