Integración de Visual Studio con Microsoft Azure Virtual Machines

Durante la segunda keynote del evento BUILD de Microsoft se anunció la integración de Visual Studio con Microsoft Azure Virtual Machines, lo cual nos ofrece la posibilidad de crear, administrar y depurar máquinas virtuales de la plataforma. Para ello es necesario actualizar el SDK a la versión 2.3.

Lo mejor de todo es que se nos habilita la posibilidad de crear nuestras máquinas virtuales en IaaS sin necesidad de salir del Visual Studio. Podemos crearla nada más comenzar con un nuevo proyecto: New Project > Web > ASP.NET Web Application > Introducimos el nombre del proyecto > Create remote resources (por defecto es Web Site si tenemos una cuenta de Microsoft Azure asociada).

Create remote resources

Una vez que aceptamos el tipo de proyecto y el tipo de recurso que vamos a crear en remoto, nos aparecerá una nueva ventana donde podremos seleccionar la configuración que necesitamos para la máquina virtual:

Create virtual machine on Window Azure

Una vez que aceptamos la configuración, mientras que estamos desarollando sobre nuestro nuevo proyecto, la máquina ya se está desplegando en Microsoft Azure:

Output virtual machine provisioning

Lo bueno en este escenario, cosa que no ocurre cuando creas la máquina desde el propio portal, es que te da la posibilidad de agregar el rol Web Server y habilitar Web Deploy durante la propia creación, por lo que una vez creada la máquina podremos acceder a la URL elegida y comprobar que efectivamente aparece la página de IIS y además veremos que se han configurado los endpoints HTTP, HTTPS y Web Deploy de manera automática:

Endpoints automatically

También podemos ver esta información desde la ventana Server Explorer, desplegando la flecha de la vm:

Virtual Machines Server Explorer

Para realizar las subidas a la nueva máquina virtual, lo único que debemos hacer es seleccionar la opción Publish, con el botón derecho sobre el proyecto Web. Al haber relacionado desde el primer momento mi desarrollo con mi máquina en Azure, la configuración ya estará prestablecida en el perfil de publicación:

Publish Web Connection

Por último, otra cosa que podemos hacer es habilitar el modo debugging en la vm en IaaS a través de la ventana Server Explorer, haciendo clic con el botón derecho sobre la máquina en cuestión y pulsando sobre la opción Enable Debugging. La primera vez que vayamos a depurar sobre una máquina, es necesario que se instale la extesión RemoteDebugVS2013:

Adding RemoteDebugVS2013 extension to VM returngivm

Cuando esta característica se habilita, se exponen dos endpoints en nuestra vm:

Remote Debugging Endpoints

Una vez que hayamos terminado con la depuración, basta con seleccionar de nuevo la vm y elegir Disable Debugging. Esta acción no eliminará de manera automática los endpoints habilitados para este fin, por lo que sería necesario eliminarlos manualmente, bien a través del portal o desde Powershell.

Una vez finalizado el proceso ya podremos seleccionar de nuevo la vm y tendremos disponible la opción Attach debugger….

Server Explorer VM Attach Debugger

Se conectará con nuestra máquina para recuperar los procesos activos, donde debemos seleccionar el proceso del IIS (w3wp.exe):

IaaS-VM-Attach-to-process

Para que este segundo punto funcione correctamente es necesario que el despliegue que se realice en la vm esté en modo Debug, con la idea de que los pdbs estén incluidos en la subida.

Espero que sea de utilidad.

¡Saludos!