Conectando una máquina virtual de Hyper-V a Internet a través de una conexión inalámbrica
En un artículo anterior escribí acerca de cómo configurar un equipo portátil para actual alternativamente como servidor de virtualización o como un equipo de escritorio casi estándar. ¿Por qué querría hacer eso? Bueno, si necesita usar máquinas virtuales de 64 bits sobre soluciones de virtualización de Microsoft, su única opción es usar Windows Server 2008 o Windows Server 2008 R2 con Hyper-V. Por ejemplo, si necesita tener diferentes configuraciones de entornos de desarrollo SharePoint 2010 en el mismo equipo, necesitará usar máquinas virtuales de 64 bits.
En aquel artículo mostré cómo configurar un sistema operativo hypervisor -específicamente Windows Server 2008 R2- para que se comporte casi como un sistema operativo de escritorio –digamos Windows 7-, habilitando las características que vienen inhabilitadas en forma predeterminada: red inalámbrica, audio, Areo, hibernación, etc. Incluso, como probablemente quieran alternar entre el escenario de servidor hypervisor al escenario de escritorio, incluí algunos archivos de script para habilitar los servicios requeridos e inhabilitar los innecesarios en cada caso.
Aunque puedan correr exitosamente máquinas virtuales de 32 y 64 bits en sus equipos portátiles cuando Hyper-V está configurado correctamente, teniendo los recursos de hardware apropiados, se darán cuenta tarde o temprano que Hyper-V está diseñado para ejecutarse en un servidor físico, no en un equipo portátil. Permítanme darles un ejemplo: ¿Para qué usan un equipo portátil después de todo? Por la movilidad, ¿cierto? Pues bien, con la movilidad estarán conectados a una red inalámbrica, al menos ocasionalmente. Entonces se van a dar cuenta que Hyper-V muestra solamente los adaptadores de red Ethernet al crear conexiones virtuales externas.
Las dos alternativas que encontré en Internet –configurar Internet Connection Sharing o usar Routing and Remote Access Service– no me resultaron útiles porque ICS está inhabilitado por mi administrador y RRAS es demasiado complicado de configurar.
Tengo dos tarjetas de red en mi equipo portátil, una Intel® 82567LM-3 Gigabit Network Connection, y una Intel® Centrino® Ultimate-N 6300 AGN:
Pero sólo una está disponible en la lista de tarjetas de red para ser usadas cuando creo una conexión virtual externa:
Hay una forma fácil que resolver esto, y tener la conexión virtual externa conectada a través de una conexión inalámbrica:
- Configuren una conexión virtual externa usando la conexión cableada como es habitual. Las máquinas virtuales usan esta conexión cuando están conectados por cable para acceder a Internet.
- Cuando no estén conectados por cable, creen un puente entre la conexión inalámbrica y la conexión externa virtual, seleccionando ambas conexiones en la ventana Network Connections, haciendo clic con el botón secundario, y seleccionando Bridge Connections del menú desplegable.
Verán una conexión de red adicional llamada Network Bridge y podrán acceder a Internet desde la máquina virtual a través de la conexión inalámbrica. Borren la conexión puente cuando estén conectados por cable nuevamente.
Como probablemente no necesiten estar permanentemente conectados a Internet, pero quieran acceder a los archivos y carpetas del equipo huésped, habitualmente configuro una red interna virtual además de la externa, y todas mis máquinas virtuales tienen dos adaptadores de red conectados a cada una de estas conexiones.
Si tienen un escenario similar al mío, este dato puede simplificarles el trabajo. Saludos.
Nueva versión de Visual Studio 2010 and .NET Framework 4 Training Kit
Desde ayer está disponible para descarga desde el sitio de Microsoft la actualización de marzo de 2011 del Visual Studio 2010 and .NET Framework 4 Training Kit. Pueden descargar el kit desde aquí. Este training kit incluye presentaciones, hands-on labs y demos, que cubren las últimas novedades en las versiones de Visual Studio 2010 y .NET Framework 4 recientemente actualizadas . Que lo disfruten.
Liberado Visual Studio 2010 Service Pack 1
Está disponible desde ayer para descarga para los suscriptores de MSDN la versión final (RTM) del Service Pack 1 para Visual Studio 2010. Pueden ver la lista de novedades y correcciones completa aquí.
Dentro de las cosas que considero más interesantes en esta versión están:
- Compatibilidad con Silverlight 4
- Soporte para pruebas de unidad contra .NET Framework 3.5
- IntelliTrace para aplicaciones de 64 bits y SharePoint
- Albergar aplicaciones y proyectos web en Internet Information Services (IIS) 7.5 Express
- Soporte para Microsoft Web Platform Installer
Desarrollando soluciones para SharePoint 2010 en un equipo portátil con Windows Server 2008 R2 con Hyper-V
Si normalmente desarrollan soluciones para SharePoint Server 2010 desde un escritorio en una oficina de una empresa, es muy probable que tengan acceso un servidor completo, con todos los servidores (SharePoint Server, SQL Server, etc.) y las herramientas necesarias ya instaladas, o mejor aún si usan versiones o configuraciones diferentes de los servidores, probablemente tengan múltiples máquinas virtuales, cada una con todo el software requerido instalado. En tal caso, este artículo no es para ustedes.
Pero si tienen un escenario diferente, como en mi caso, porque necesitan trabajar desde diferentes lugares utilizando un equipo portátil, y necesitan tener diferentes instalaciones de los servidores y herramientas (diferentes versiones, diferentes idiomas, etc.), entonces necesitan usar máquinas virtuales en su equipo portátil.
Con Microsoft Office SharePoint Server 2007, tanto el sistema operativo anfitrión (sobre el que corre el software de virtualización) como el invitado (el que se instala en la máquina virtual) podían ser 32 bits, ya que era posible usar la versión de 32 bits de los servidores (SharePoint Server, SQL Server, etc.). Además, era posible utilizar un sistema operativo de escritorio (no servidor) como anfitrión, empleando Microsoft Virtual PC 2007 por ejemplo. Con SharePoint Server 2010 el sistema operativo de base debe ser de 64 bits, digamos por ejemplo Windows Server 2008 R2 x64. Esto es porque SharePoint Server 2010 sólo se ejecuta sobre un sistema operativo de 64 bits.
No es posible tener un sistema operativo de 64 bits en una máquina virtual usando Microsoft Virtual PC 2007 o el nuevo Windows Virtual PC de Windows 7; la única forma de tener un sistema operativo virtual de 64 bits es mediante el uso de un hypervisor: Windows Server 2008 R2 con el rol Hyper-V.
Resulta un poco extraño ejecutar un hypervisor en un equipo portátil, ¿no? Bueno, probablemente tengan razón, pero uno se acostumbra, créanme.
¿Qué cosas de las que estamos acostumbrados a tener en un equipo portátil se pierden al usar Windows Server 2008 R2 con Hyper-V como sistema operativo? Al usar la instalación predeterminada, ocurre lo siguiente:
- No hay Audio y ni Windows Media Player. El servicio Windows Audio está desactivado en forma predeterminada y el reproductor de Windows Media no está instalado en un servidor. Generalmente no hay nadie escuchando música en la sala de servidores, es un entorno muy ruidoso.
- No hay conectividad inalámbrica El servicio Wireless LAN Service no está instalado. Por lo general servidores están conectados a la red mediante cables.
- No está disponible Aero. El servicio de Themes está deshabilitado de forma predeterminada para preservar los recursos del servidor.
- No hay búsquedas disponibles. El servicio Windows Search está deshabilitado en forma predeterminada también para preservar los recursos del servidor.
- No se puede suspender ni hibernar. Generalmente servidores están siempre encendidos y nunca se suspenden ni hibernan, e incluso nunca se apagan.
- El molesto Event Tracker aparece al apagar el sistema. No se puede apagar el sistema sin explicar primero la razón.
- La seguridad mejorada de Internet Explorer. Cada vez que se intenta visitar un sitio web aparece un mensaje indicando por qué no deberían navegar por la web desde un servidor.
Pero lo que es razonable en un servidor, no es razonable en el equipo portátil que utilizan para el trabajo de todos los días, ¿cierto? Ustedes como yo quieren escuchar música, necesitan las conexiones inalámbricas, necesitan buscar archivos y mensajes de correo electrónico (Microsoft Outlook también usa el servicio Windows Search), quieren el aspecto y funcionalidad de Aero, y no quieren llevar su equipo portátil de un lugar a otro con el disco duro girando.
Excepto por lo de suspender e hibernar, pueden tener audio, conectividad inalámbrica, búsqueda de archivos y de correo electrónico, y hasta el aspecto de un sistema operativo de escritorio (no servidor) en Windows Server 2008 R2 con Hyper-V. Desafortunadamente, tan pronto como agreguen la función de Hyper-V, perderán la capacidad de suspender o hibernar. Pero no son tan malas noticias, una vez agregado Hyper-V, podrán suspender o hibernar el equipo portátil deshabilitando temporalmente el hypervisor, sin necesidad de quitar el rol.
En este artículo les mostraré cómo configurar una instalación predeterminada de Windows Server 2008 R2, para que se parezca y se comporte (casi) como un sistema operativo Windows 7 de escritorio. Este es el aspecto de mi equipo:
Habilitar audio
Esto es fácil. Simplemente hagan clic en el botón Start y escriban “services” en el cuadro de búsqueda para abrir la consola Services. Busquen el servicio Windows Audio, hagan clic con el botón secundario y seleccionen Properties, y luego en el cuadro de diálogo Properties, cambien Start type de Disabled a Automatic.
O abran un símbolo del sistema con permisos de administrador y escriban sc \\[equipo] config audiosrv start= auto reemplazando [equipo] por el nombre de su equipo y luego escriban net start audiosrv. Noten que en el argumento start del comando sc hay un espacio en blanco luego del símbolo = y no hay un espacio en blanco antes.
Habilitar la red inalámbrica, Aero y la búsqueda
Instalen las funciones que faltan. Hagan clic en el botón Start y escriban “server” en el cuadro de búsqueda para abir la consola Server Manager. En el panel izquierdo hagan clic en Features y luego hagan clic en el vínculo Add Features en el panel de la derecha. En el asistente Add Feature Wizard seleccionen e instalen las características Desktop Search y Wireless LAN Service.
Una vez que estas características están instaladas, abran la consola Services nuevamente y busquen el servicio Themes, hagan clic con el botón secundario del mouse y seleccionen Propiedades, luego en el cuadro de diálogo Propiedades cambien Start type de Disabled a Automatic. Lo mismo con el servicio Desktop Window Manager Session Manager. Y lo mismo también con el servicio Windows Search, pero establezcan el tipo de inicio en Automatic (Delayed start).
O abran un símbolo del sistema con permisos de administrador y escriban for %%s in (uxsms themes) do (sc \\[machine] config %%s start= auto) y luego sc \\[machine] config wsearch start= auto y finalmente for %%s in (uxsms themes wsearch) do (net start %%s).
Habilitar suspender/hibernar
Supongamos que han instalado Windows Server 2008 R2 y luego agregaron el rol Hyper-V. Si abren un símbolo del sistema con permisos de administrador y luego ejecutan el comando bcdedit /enum {current} obtendrán una salida como esta:
bcdedit no es un editor “binario codificado decimal”, como probablemente podrían suponer, sino un editor del “almacén de datos de configuración de arranque” o “boot configuration datastore”. Noten la línea hypervisorlaunchtype asignada en Auto en la última línea. Noten también la descripción Windows Server 2008 R2; este es el texto que ven durante el inicio del equipo o durante la recuperación del sistema cuando varias configuraciones de arranque están disponibles.
Copien esta configuración de inicio a una nueva, escribiendo bcdedit /copy {current} /d “Microsoft Windows Server 2008 R2 (w/o Hyper-V)” en un símbolo del sistema con permisos de administrador. El texto entre las comillas es la descripción de la nueva configuración de inicio. Pueden elegir una descripción diferente a la mía.
Como resultado del comando anterior aparece un mensaje que incluye un GUID de la nueva configuración de inicio. Deshabiliten la función del hypervisor en la nueva configuración de arranque utilizando bcdedit /set {GUID} hypervisorlaunchtype off donde GUID es el GUID mostrado como resultado del comando anterior.
Ya está. Al iniciar el equipo podrán elegir la configuración con o sin hypervisor. Además, si desean cambiar la configuración de inicio predeterminada, o cambiar el tiempo durante el que se muestra la lista de configuraciones durante el inicio del equipo, pueden utilizar el comando bcdedit o el cuadro de diálogo Startup and Recovery en las propiedades del sistema.
Esta nueva configuración de inicio deshabilitará Hyper-V y les permitirá habilitar la suspensión o hibernación del equipo, aunque (obviamente) tendrán que reiniciar el equipo portátil para pasar a la configuración con Hyper-V habilitado. Esto es mucho más eficiente que eliminar completamente el rol de Hyper-V, lo que por cierto, también requiere reiniciar el equipo.
Para habilitar la hibernación después de reiniciar el sistema en la configuración sin Hyper-V, deben abrir un símbolo del sistema con permisos de administrador y ejecutar el comando powercfg –H (hache en mayúsculas).
Deshabilitar Event Tracking
Abran la consola Local Group Policy Editor, haciendo clic en Start y escribiendo “edit policy” en el cuadro de búsqueda. Luego expandan el nodo Local Computer Policy en el panel izquierdo, luego Computer Configuration, luego Administrative Templates, y finalmente System. En el panel de la derecha busquen Display Shutdown Event Tracker, hagan doble clic en él para modificar su configuración y luego elijan Disable.
Desactivar la seguridad mejorada de Internet Explorer
Hagan clic en el botón Start luego escriban “server” en el cuadro de búsqueda y abran la consola Server Manager. Seleccionen el nodo raíz en el árbol de la izquierda y luego hagan clic en el vínculo Configure IE ESC en el panel derecho. Seleccionen Off para desactivar la seguridad mejorada.
Comentarios finales
Ahora pueden usar su equipo portátil en dos escenarios: como un hypervisor o como un portátil normal. En el primer escenario, les recomiendo deshabilitar nuevamente los servicios como Windows Audio, Themes, Windows Search, etc. y desactivar los temas de Aero, con el fin de preservar los recursos del sistema. Además, si tienen otros servidores como SQL Server o incluso un servidor de SharePoint instalado en el sistema operativo anfitrión, les recomiendo también deshabilitarlos mientras utilizan el hypervisor.
Dado que es necesario apagar el sistema antes de mover el equipo portátil mientras se utiliza el hypervisor, y dado que es necesario reiniciar para cambiar de un escenario a otro, consideren la posibilidad de comprar una unidad de disco de estado sólido para la partición del sistema y así acelerar el apagado y puesta en marcha del equipo. Por cierto, con un disco así, reiniciar el equipo puede ser incluso más rápido que hibernar y restaurar desde una unidad de disco duro normal, sobre todo cuando el equipo portátil tiene mucha memoria, como debería tener para poder usar eventualmente múltiples máquinas virtuales simultáneamente con el hypervisor.
Para facilitar pasar del escenario de hypervisor al escenario de portátil normal, pueden utilizar los siguientes archivos de proceso por lotes y secuencias de comandos.
Utilicen este archivo por lotes search.bat para habilitar o deshabilitar el servicio de búsqueda escribiendo simplemente search on o search off en un símbolo del sistema con permisos de administrador. Este archivo por lotes no sólo detiene o inicia el servicio de búsqueda, sino que también lo activa o desactiva, por lo que se mantiene el estado configurado después de reiniciar el equipo.
@echo off rem Enables and starts or stops and disables search services rem Search services: rem Windows Search set x=%1%# if %x%==# goto usage if %1%==on goto enable if %1%==off goto disable :usage echo "Usage: search on|off" goto end :enable rem Enables desktop services for %%s in (wsearch) do (sc \\[machine] config %%s start= delayed-auto) for %%s in (wsearch) do (net start %%s) pause goto end :disable rem Disables search services for %%s in (wsearch) do (net stop %%s) for %%s in (wsearch) do (sc \\[machine] config %%s start= disabled) pause goto end :end
Pueden usar este otro archivo de procesamiento por lotes audio.bat para habilitar o deshabilitar los servicios relacionados con audio escribiendo audio on o audio off en un símbolo del sistema con permisos de administrador.
@echo off rem Enables and starts or stops and disables audio related services rem Audio services: rem Windows Audio rem Windows Audio Endpoint Builder set x=%1%# if %x%==# goto usage if %1%==on goto enable if %1%==off goto disable :usage echo "Usage: audio on|off" goto end :enable rem Enables audio services for %%s in (audiosrv audioendpointbuilder) do (sc \\[machine] config %%s start= auto) for %%s in (audiosrv audioendpointbuilder) do (net start %%s) pause goto end :disable rem Disables audio services for %%s in (audiosrv audioendpointbuilder) do (net stop %%s) for %%s in (audiosrv audioendpointbuilder) do (sc \\[machine] config %%s start= disabled) pause goto end :end
Para detener todos los servicios de servidor aquí hay otro archivo de procesamiento por lotes servermode.bat para detener y deshabilitar o habilitar e iniciar estos servicios escribiendo servermode off o servermode on en un símbolo del sistema con permisos de administrador.
@echo off rem Enables and starts or stops and disables server related services rem Server services: rem Application Host Helper Service rem Distributed Transaction Coordinator rem Simple Mail Transfer Protocol (SMTP) rem IIS Admin Service rem Net.Msmq Listener Adapter (depends on Message Queuing) rem Message Queuing rem SharePoint 2010 Timer rem SharePoint 2010 Tracing rem SharePoint 2010 User Code Host rem SharePoint Foundation Search V4 rem SharePoint Server Search 14 rem SQL Full-text Filter Daemon Launcher (MSSQLSERVER) rem SQL Server Agent (MSSQLSERVER) (depends on SQL Server (MSSQLSERVER)) rem SQL Server (MSSQLSERVER) rem SQL Server (SHAREPOINT) rem SQL Server (SQLEXPRESS) rem SQL Server Analysis Services (MSSQLSERVER) rem SQL Server Browser rem SQL Server Integration Services 10.0 rem SQL Server Reporting Services (MSSQLSERVER) rem SQL Server VSS Writer rem Visual Studio Team Foundation Background Job Agent rem Visual Studio Team Foundation Build Service Host rem World Wide Web Publishing Service set x=%1%# if %x%==# goto usage if %1%==off goto disable if %1%==on goto enable :usage echo "Usage: servermode on|off" goto end :disable rem Disables server services for %%s in (apphostsvc SMTPSVC msdtc iisadmin NetMsmqActivator msmq sptimerv4 sptracev4 spusercodev4 spsearch4 osearch14 SQLSERVERAGENT MSSQLSERVER MSSQL$SHAREPOINT MSSQL$SQLEXPRESS MSSQLServerOLAPService SQLBrowser MsDtsServer100 ReportServer SQLWriter TFSJobAgent TFSBuildServiceHost W3SVC) do (net stop %%s) for %%s in (apphostsvc msdtc SMTPSVC iisadmin NetMsmqActivator msmq sptimerv4 sptracev4 spusercodev4 spsearch4 osearch14 MSSQLFDLauncher SQLSERVERAGENT MSSQLSERVER MSSQL$SHAREPOINT MSSQL$SQLEXPRESS MSSQLServerOLAPService SQLBrowser MsDtsServer100 ReportServer SQLWriter TFSJobAgent TFSBuildServiceHost W3SVC) do (sc \\[machine] config %%s start= disabled) pause goto end :enable rem Enables server services for %%s in (apphostsvc msdtc iisadmin NetMsmqActivator msmq sptimerv4 sptracev4 spusercodev4 MSSQLFDLauncher SQLSERVERAGENT MSSQLSERVER MSSQL$SHAREPOINT MSSQL$SQLEXPRESS MSSQLServerOLAPService SQLBrowser MsDtsServer100 ReportServer SQLWriter TFSJobAgent TFSBuildServiceHost W3SVC) do (sc \\[machine] config %%s start= auto) for %%s in (msdtc) do (sc \\[machine] config %%s start= delayed-auto) for %%s in (spsearch4 osearch14 MSSQLFDLauncher SMTPSVC) do (sc \\[machine] config %%s start= demand) for %%s in (apphostsvc msdtc iisadmin NetMsmqActivator msmq sptimerv4 sptracev4 spusercodev4 spsearch4 osearch14 MSSQLFDLauncher SQLSERVERAGENT MSSQLSERVER MSSQL$SHAREPOINT MSSQL$SQLEXPRESS MSSQLServerOLAPService SQLBrowser MsDtsServer100 ReportServer SQLWriter TFSJobAgent TFSBuildServiceHost W3SVC SMTPSVC) do (net start %%s) pause goto end :end
Como los servicios del hypervisor sólo son necesarios cuando inician el equipo con la configuración con Hyper-V, estos servicios son habilitados o deshabilitados en un archivo de procesamiento por lotes separado:
@echo off rem Starts or stops Hyper-V related services if %1%==off goto disable if %1%==on goto enable goto end :disable for %%s in (vhdsvc nvspwmi vmms hvboot) do (net stop %%s) for %%s in (vhdsvc nvspwmi vmms hvboot) do (sc \\[machine] config %%s start= disabled) pause goto end :enable for %%s in (vhdsvc nvspwmi vmms) do (sc \\[machine] config %%s start= auto) for %%s in (hvboot) do (sc \\[machine] config %%s start= demand) for %%s in (vhdsvc nvspwmi vmms hvboot) do (net start %%s) pause goto end :end
Como tengo que tener varios servidores instalados (SQL Server, SharePoint Server, Team Foundation Server, etc.) la lista de servicios en el archivo servermode.bat es grande. Pueden remover o agregar los servicios que ustedes necesiten. Si van a modificar estos archivos, tengan en cuenta lo siguiente:
- Dependencias. Pueden necesitar detener un servicio solamente después de haber detenido todos los servicios que dependan de él, para evitar que aparezcan mensajes de confirmación durante el procesamiento de archivo por lotes. Asegúrense de iniciar los servicios en el orden inverso.
- Tipo de inicio. Deshabilitar los servicios es fácil: hay solo un estado deshabilitado. Pero habilitaros es un poco más complicado, porque hay más de un tipo de inicio: automático, automático demorado, y manual. Asegúrense que retornan los servicios a su tipo de inicio original.
La yapa: si quieren que su instalación de Windows Server 2008 R2 luzca exactamente (bueno, casi) como una de Windows 7, con los temas de Aero, pueden usar estos archivos de procesamiento por lotes y secuencias de comandos. Adivinaron, el archivo de procesamiento por lotes se llama desktopmode.bat y los comandos son desktopmode on y desktopmode off.
@echo off rem Enables and starts or stops and disables desktop related services rem Desktop services: rem Windows Audio rem Windows Audio Endpoint Builder rem Windows Search rem Desktop Window Manager Session Manager rem Disk Defragmenter (stop only) rem Themes set x=%1%# if %x%==# goto usage if %1%==on goto enable if %1%==off goto disable :usage echo "Usage: desktopmode on|off" goto end :enable rem Enables desktop services for %%s in (audiosrv audioendpointbuilder uxsms defragsvc themes) do (sc \\[machine] config %%s start= auto) for %%s in (wsearch) do (sc \\[machine] config %%s start= delayed-auto) for %%s in (defragsvc) do (sc \\[machine] config %%s start= demand) for %%s in (audiosrv audioendpointbuilder wsearch uxsms themes) do (net start %%s) DesktopTheme.vbs pause goto end :disable rem Disables desktop services for %%s in (audiosrv audioendpointbuilder wsearch uxsms defragsvc themes) do (net stop %%s) for %%s in (audiosrv audioendpointbuilder wsearch uxsms defragsvc themes) do (sc \\[machine] config %%s start= disabled) ServerTheme.vbs pause goto end :end
Archivo DesktopTheme.vbs:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "rundll32.exe %SystemRoot%\system32\shell32.dll,Control_RunDLL %SystemRoot%\system32\desk.cpl desk,@Themes /Action:OpenTheme /file:""C:\Windows\Resources\Themes\aero.theme"""
Wscript.Sleep 15000
WshShell.AppActivate("Desktop Properties")
WshShell.Sendkeys "%FC"
WshShell.Sendkeys "{F4}"
Archivo ServerTheme.vbs:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "rundll32.exe %SystemRoot%\system32\shell32.dll,Control_RunDLL %SystemRoot%\system32\desk.cpl desk,@Themes /Action:OpenTheme /file:""C:\Windows\Resources\Ease of Access Themes\classic.theme"""
Wscript.Sleep 1000
WshShell.AppActivate("Desktop Properties")
WshShell.Sendkeys "%FC"
WshShell.Sendkeys "{F4}"
Una recomendación final: agreguen la carpeta donde hayan dejado estos archivos a la variable de entorno PATH.
Diviértanse.
PS: para ser completamente honesto, hay otras cosas que pueden dejar de tener si instalan Windows Server 2008 R2 en un equipo portátil. En primer lugar, los controladores de Bluetooth habitualmente no están disponibles para los sistemas operativos de servidor, por esto ténganlo en cuenta si dependen de dispositivos Bluetooth conectados al equipo portátil para el trabajo de todos los días. En segundo término, dependiendo del hardware que tengan, otros controladores de hardware pueden no estar disponibles para un sistema operativo de servidor. Los más frecuentemente faltan son los del lector de huellas y los del lector de smartcards. Pueden tratar instalar los de Windows 7, pero estos pueden funcionar o no. Por último, algunas herramientas de terceros detectan que no están sobre un sistema operativo de escritorio y no ejecutan o ni siquiera se instalan. Hasta ahora yo he sobrevivido a estas limitaciones, pero no pueden decir que no les avisé.
Cómo depurar el código subyacente de formularios InfoPath desplegados en el navegador
Para programar el código subyacente que maneja un evento en un formulario InfoPath, se utiliza Visual Studio Tools for Applications. Para depurar el código, Visual Studio Tools for Applications despliega el formulario en el cliente de InfoPath. Aunque esto puede ser suficiente en muchos casos, no es posible depurar el código de formularios desplegados en el navegador, publicados en un sitio SharePoint utilizando Form Services, por ejemplo.
En esta situación es posible usar Visual Studio para depurar el código subyacente de esos formularios. Para ello:
- En Visual Studio Tools for Applications modificar las propiedades del proyecto para incluir información de depuración completa: hacer clic en Proyecto, luego clic en Propiedades de [Formulario]…, luego clic en la solapa Generar, y por último clic en el botón Avanzadas….
- Publicar el formulario en el sitio SharePoint con InfoPath Form Services en la forma habitual.
- Navegar hasta el sitio donde fue publicado el formulario.
- Con Visual Studio, abrir la solución generada por InfoPath.
- Poner puntos de ruptura y agregar puntos de inspección en la forma habitual.
- Asociar el depurador al proceso w3wp.exe (este es el worker process de Internet Information Services): hacer clic en Depurar, luego en Asociar al proceso…, seleccionen todas las instancias de w3wp.exe si hay más de una, finalmente hagan clic en el botón Asociar.
- Crear un nuevo formulario y usarlo hasta que Visual Studio se detenga en un punto de inspección. A partir de allí la depuración ocurre como con cualquier otro proyecto.
En este video les muestro cómo hacerlo.
También pueden descargar el video de aquí.
Actualización: El procedimiento anterior asume que Visual Studio y SharePoint están en el mismo equipo. Cuando Visual Studio está en un equipo diferente, es necesario depurar en forma remota. Para ello:
- Ejecutar el Monitor de Depuración Remota de Visual Studio en el servidor: hacer clic en Inicio, luego en Visual Studio, luego en Visual Studio Tools, finalmente en Visual Studio Remote Debugger.
- En caso de ser necesario habilitar los usuarios para depuración: en el Visual Studio Remote Debugger hacer clic en Tools, luego en Permissions; en el cuadro de diálogo Permissions for Remote Debugging agregar los usuarios que pueden depurar.
- Asociar el depurador en el equipo cliente al proceso w3wp.exe del servidor: en Visual Studio ejecutando en el equipo cliente hacer clic en Depurar, luego en Asociar al proceso…, hacer clic en el botón Examinar y buscar el servidor remoto. Luego el procedimiento es igual que antes.
En este video muestro cómo hacerlo:
También pueden descargar este otro video de aquí.
Reunión mensual de CUMUY de setiembre
El próximo martes 28 de setiembre a las 18.30 horas nos reuniremos en Microsoft Uruguay, Cebollatí 1474 piso 5, para ver Entity Framework y Visual Studio LightSwitch.
Andrés Aguiar nos mostrará el poder que nos provee Entity Framework para el desarrollo de software. Yo les mostraré Visual Studio LightSwitch, un nuevo miembro de la familia de Visual Studio que permite especificar la estructura de la base de datos y de los formularios y genera automáticamente el código para aplicaciones de tres capas.
¡Los esperamos!
Open Space de Metodologías Ágiles en Montevideo
El sábado 11 de setiembre, de 9:30 a 16:00 horas, en las oficinas de Microsoft Uruguay, Cebollatí 1474 piso 5, tendrá lugar el primer open space de metodologías ágiles organizado por Ágil Uruguay.
