Centro de desarrollo de ASP.NET: Guía detallada para convertir proyectos Web de Visual Studio .NET 2002/2003 a Visual Studio 2005

Noviembre de 2005

Publicado: 26 de Diciembre de 2005

Equipo de herramientas y plataforma Web
Microsoft Corporation

En esta página

Introducción Introducción
Consideraciones acerca de la conversión Consideraciones acerca de la conversión
Expectativas de la conversión de proyectos Web Expectativas de la conversión de proyectos Web
Parte 1: Preparación de proyectos Web de Visual Studio .NET 2002/2003 para la conversión Parte 1: Preparación de proyectos Web de Visual Studio .NET 2002/2003 para la conversión
Configuración de la aplicación en Visual Studio .NET 2003 Configuración de la aplicación en Visual Studio .NET 2003
Movimiento de archivos excluidos de los proyectos Web Movimiento de archivos excluidos de los proyectos Web
Búsqueda de archivos de proyecto duplicados Búsqueda de archivos de proyecto duplicados
Búsqueda de varias soluciones incluidas en el mismo proyecto Web Búsqueda de varias soluciones incluidas en el mismo proyecto Web
Eliminación de referencias a proyectos Web Eliminación de referencias a proyectos Web
Parte 2: Migración de los proyectos Web Parte 2: Migración de los proyectos Web
Ejecución del Asistente para la migración de Visual Studio 2005 Ejecución del Asistente para la migración de Visual Studio 2005
Copia de seguridad de la aplicación Copia de seguridad de la aplicación
Parte 3: Pasos posteriores a la migración para completar el proceso Parte 3: Pasos posteriores a la migración para completar el proceso
Análisis del informe de conversión Análisis del informe de conversión
Comprobación en primer lugar de la compilación de proyectos de biblioteca de clases Comprobación en primer lugar de la compilación de proyectos de biblioteca de clases
Solución de errores y advertencias de conversión en cada proyecto Web Solución de errores y advertencias de conversión en cada proyecto Web
Solución de problemas de tiempo en ejecución en cada proyecto Web Solución de problemas de tiempo en ejecución en cada proyecto Web
Parte 4: Información adicional Parte 4: Información adicional
Errores de validación HTML/XHTML Errores de validación HTML/XHTML
Apertura de proyectos de sitio Web usando la ficha IIS local o un archivo de solución Apertura de proyectos de sitio Web usando la ficha IIS local o un archivo de solución

Introducción

Consideraciones acerca de la conversión

Antes de considerar las prácticas más adecuadas para convertir un proyecto Web de Visual Studio .NET 2003 a formato de Visual Studio 2005, es conveniente que conozca las ventajas que esta conversión ofrece para, de este modo, decidir si tiene sentido o no llevarla a cabo. Esta decisión se basa en última instancia en su aplicación y situación particulares.

Así, si tiene una aplicación que se encuentra en proceso de producción y que rara vez se actualiza, no tiene mucho sentido convertirla, dado que las ventajas serían muy limitadas. Aun si se decantara por no convertir la aplicación a la sintaxis de Visual Studio 2005, todavía quedarían dos opciones que sopesar:

  1. Conservar la aplicación asignada a ASP.NET 1.1 (o 1.0) en la configuración de IIS para el directorio virtual de dicha aplicación. Continuaría utilizando Visual Studio .NET 2003 para modificar el código de la aplicación.

  2. Asignar la aplicación para que se ejecute en ASP.NET 2.0 en configuración de IIS, pero sin actualizar el formato del proyecto de Visual Studio .NET 2003. En este escenario, la aplicación sacaría partido de diversas mejoras en la seguridad y el rendimiento en ASP.NET 2.0, si bien seguiría siendo necesario usar Visual Studio .NET 2003 para modificar el código de la aplicación. Nota: las aplicaciones en ASP.NET 1.1 y ASP.NET 2.0 pueden ejecutarse simultáneamente en el mismo servidor IIS.

La principal ventaja de convertir un proyecto de aplicación Web a Visual Studio 2005 reside en la capacidad para usar un gran número de características nuevas en ASP.NET 2.0 (por ejemplo, páginas principales, etc.) en la aplicación existente. Si desea mejorar un conjunto de aplicaciones Web existente por medio de Visual Studio .NET 2003, probablemente la decisión más acertada sea actualizar a Visual Studio 2005.

Expectativas de la conversión de proyectos Web

En el caso de proyectos Web en cierto modo sencillos, donde un proyecto Web es el único proyecto en la solución de Visual Studio .NET 2003, la conversión debería ser un proceso relativamente automático que llevara escaso tiempo o en el que apenas hubiera que solucionar problemas.

Si la aplicación que está convirtiendo tiene un tamaño considerable y tiene varios proyectos Web y proyectos adicionales (como bibliotecas de clases) en una sola solución de Visual Studio, es posible que surjan problemas durante la migración. Calcule que pasará gran parte del día completando todo el proceso. Los pasos y orientación que este artículo ofrece pueden ser de ayuda a un usuario bien informado para migrar la mayoría de las aplicaciones de complejidad media.

Parte 1: Preparación de proyectos Web de Visual Studio .NET 2002/2003 para la conversión

Configuración de la aplicación en Visual Studio .NET 2003

Al actualizar un proyecto, se recomienda que tenga Visual Studio .NET 2002/2003 y Visual Studio 2005 instalados en el mismo equipo

Para preparar la migración de un proyecto Web de Visual Studio .NET 2003, primero debe comprobar que dicho proyecto está configurado y se ejecuta correctamente en el entorno de Visual Studio .NET 2003.

Si va a actualizar una aplicación que tiene varios proyectos en una sola solución, antes de proceder con la migración confirme que toda esta solución se ha creado y se ejecuta dentro de Visual Studio .NET 2003. Incluso si actualiza una aplicación representada en un único proyecto Web, abra el archivo de solución para comprobar la aplicación y ejecutarla en Visual Studio .NET 2003. Para ello, en Visual Studio .NET 2003, haga clic en Abrir solución.

Con la solución ya abierta, en el menú Generar, haga clic en Generar solución para garantizar que la aplicación se compila sin dar error.

Figura 1. Generación de la solución

Para ejecutar la aplicación, presione F5 en Visual Studio .NET 2003 y asegúrese de que la aplicación se ejecuta correctamente y sin errores. Compruebe páginas en todos los proyectos Web de la solución para asegurarse de que IIS está correctamente configurado para servir a las páginas de la aplicación.

Movimiento de archivos excluidos de los proyectos Web

Otro procedimiento con el que se reducirían los posibles problemas consiste en eliminar los archivos excluidos del proyecto Web. Si la estructura de carpetas del proyecto Web contiene archivos a los que no se hace referencia en ningún otro proyecto de la solución, páselos a una ubicación separada antes de migrar la solución.

Para poder encontrar estos archivos excluidos, puede hacer uso del botón Mostrar todos los archivos en el Explorador de soluciones.

Figura 2. Visualización de archivos ocultos

Búsqueda de archivos de proyecto duplicados

Otro aspecto que podría causar problemas en la migración es tener varios archivos de proyecto en la carpeta raíz de una aplicación Web IIS. Por lo general, solamente hay un archivo de proyecto (*.vbproj o *.csproj) en la carpeta raíz de una aplicación Web IIS determinada, pero en ocasiones existen varios.

Un motivo habitual de la existencia de varios archivos de proyecto en la carpeta raíz es tener una solución con varios proyectos Web, cada uno de ellos con un conjunto distinto de páginas en dicha aplicación Web. Este tipo de estructura de solución permite a los usuarios crear un conjunto de páginas en distintos ensamblados dentro de una sola aplicación Web. A continuación se muestra un ejemplo de esta estructura.

Si posee varios proyectos Web en la misma carpeta raíz de una aplicación Web IIS, difícilmente tendrá problemas en la migración mientras cada proyecto no incluya el mismo conjunto de archivos.

Pero, en caso de que el mismo conjunto o subconjunto de archivos tenga referencias en varios de esos proyectos Web, se realizará la migración de los archivos comunes dos veces y se producirán errores. Normalmente esto ocurre si alguien crea una copia de seguridad de un archivo de proyecto existente, lo que provocaría la aparición de dos archivos de proyecto Web con exactamente el mismo conjunto de archivos en ellos. Si tiene varios archivos de proyecto Web en la carpeta raíz de la aplicación Web y éstos hacen referencia al mismo conjunto de archivos, asegúrese de que elimina aquellos que la solución no utiliza para, así, garantizar que no se realiza dos veces la migración de los archivos contenidos en el proyecto Web.

Búsqueda de varias soluciones incluidas en el mismo proyecto Web

El proceso recomendado consiste en migrar una solución de Visual Studio completa, si bien es posible que tenga varias soluciones que representen a la aplicación que va a migrar. En esta situación, migraría cada solución una a una para convertir la aplicación entera a Visual Studio 2005. Como ejemplo, si el mismo proyecto Web se incluye en dos soluciones de Visual Studio y trata de actualizar ambas, aparecerá un error al migrar la segunda solución.

Para evitar que esto ocurra, migre la primera solución y, cuando proceda con la segunda, elimine de ésta los proyectos Web que ya se hayan migrado con la primera solución. Una vez eliminados, podrá migrar la segunda solución sin problema alguno, tras lo cual podrá volver a agregar los proyectos Web ya migrados.

Eliminación de referencias a proyectos Web

Si tiene una solución con varios proyectos, es igualmente importante comprobar que no hay referencias a ninguno de los proyectos Web de la solución. Un ejemplo de esto sería tener dos proyectos Web (WebProjectA y WebProjectB), donde WebProjectB hace referencia a WebProjectA para usar algunas de las clases de WebProjectA

Figura 3. Eliminación de referencias de proyecto Web

Este patrón, habilitado en Visual Studio .NET 2003, no funcionará una vez que la solución haya migrado a Visual Studio 2005. Por suerte, el código de solución se puede modificar para evitar que esto ocurra. Para ello, puede usar un modelo similar al de la sección anterior cambiando el código compartido a una biblioteca de clases y estableciendo una referencia a éste desde ella.

Utilizaremos el ejemplo sencillo de WebProjectA y WebProjectB (que contiene una referencia de proyecto a WebProjectA) para ilustrar el modo de hacer esto:

  1. Agregue un nuevo proyecto ClassLibrary del mismo idioma (Visual Basic o C#) a la solución por medio de Archivo > Agregar proyecto > Nuevo proyecto

  2. Copie las clases de WebProjectA que WebProjectB necesite en el nuevo proyecto de biblioteca de clases.

  3. En WebProjectB, elimine la referencia a WebProjectA.

  4. Tanto en WebProjectA como en WebProjectB, agregue una "referencia de proyecto" nueva al proyecto de biblioteca de clases creado en el paso 3.

  5. Cuando haya reestructurado la solución mediante la indicación anterior, asegúrese de que la solución se genera sin problema alguno en Visual Studio .NET 2003. Cuando se haya generado por completo, ejecute toda la aplicación para comprobar que sigue siendo plenamente funcional.

Figura 4. Solución tras la migración de proyectos Web

Parte 2: Migración de los proyectos Web

Ejecución del Asistente para la migración de Visual Studio 2005

Una vez que haya reestructurado la solución de Visual Studio .NET 2003 mediante las instrucciones de la parte 1 y haya comprobado que toda la solución se genera y ejecuta adecuadamente, estará listo para migrarla a Visual Studio 2005.

Al actualizar la aplicación, la práctica adecuada es realizar la migración en el mismo equipo donde se ha comprobado y ejecutado mediante Visual Studio .NET 2003. Visual Studio 2005 se puede instalar plenamente junto con Visual Studio .NET 2003 en el mismo equipo, de manera que debería poder instalarlo sin ningún problema.

Con Visual Studio 2005 instalado en el mismo equipo, actualice la aplicación abriendo el archivo de solución que represente a dicha aplicación. Se pueden abrir proyectos individuales y migrarlos, aunque la forma más sencilla es migrar la solución completa. Para ello, haga clic en Abrir proyecto en Visual Studio 2005 y abra el archivo de solución (*.sln) que represente a la aplicación que desea actualizar. Si lo hace, aparecerá la siguiente pantalla que indica que está a punto de iniciar el proceso de migración:

Figura 5: Asistente para la conversión

Para obtener los mejores resultados, siga el procedimiento predeterminado de este asistente para comenzar la migración.

Copia de seguridad de la aplicación

En el transcurso de los pasos que aparecen en el asistente para la conversión, preste especial atención a la creación de una copia de seguridad de la solución. Compruebe que la opción está seleccionada para crear la copia de seguridad y recuerde anotar la ubicación de dicha copia por si tiene que restaurar la copia de seguridad de la aplicación Web de Visual Studio .Net 2002/2003 más adelante.

Figura 6. Copia de seguridad de un proyecto

Parte 3: Pasos posteriores a la migración para completar el proceso

Análisis del informe de conversión

Cuando el Asistente para la conversión haya finalizado, se generará un informe en formato XML donde se incluyen los resultados del proceso de migración.

Figura 7. Informe sobre la conversión

No olvide anotar la ubicación del archivo XML que se muestra en el campo URL de la parte superior de la ventana del documento. Anote esta ubicación para que se pueda volver a hacer referencia al informe XML una vez que el archivo se haya cerrado. Además del informe XML donde se indican los errores y advertencias para todos los proyectos de la solución, cada uno de los proyectos Web posee un archivo (ConversionReport.txt) que contiene la misma información, pero para cada proyecto Web de la solución.

El informe XML resume los resultados de cada proyecto de la solución. Si se contrae, podrá saber rápidamente el número de advertencias y errores que cada proyecto ha generado, mientras que si lo expande, podrá ver todos los detalles relativos a dichas advertencias y errores.

En el caso de las aplicaciones más básicas, el informe de conversión posiblemente muestre que la migración de todos los proyectos de la solución se ha llevado a cabo correctamente. Sin embargo, en situaciones reales donde la complejidad de las soluciones es mucho mayor, lo más probable es que se produzcan errores y advertencias de la migración y deberá realizarse una investigación.

En la siguiente sección se describe el método más efectivo para resolver los problemas que se hayan señalado.

Comprobación en primer lugar de la compilación de proyectos de biblioteca de clases

Como norma general, el mejor método para tratar cualquier problema consiste en resolver cada proyecto de la solución (uno a uno), empezando por los componentes compartidos.

Como ejemplo, si tiene proyectos Web en la solución que hacen referencia a otros proyectos (como el proyecto de biblioteca de clases), deberá resolver primero cualquier problema que exista con respecto a tales proyectos a los que se hace referencia. Para ello, haga clic con el botón secundario en cada proyecto y seleccione Generar proyecto para asegurarse de que se compila.

Figura 8. Creación en primer lugar de bibliotecas de clases

Si toda la solución se compila correctamente en Visual Studio .NET 2003 antes de la conversión, los errores de compilación que puede que surjan en los proyectos de biblioteca de clases estarán relacionados con palabras clave reservadas o nuevos tipos en el marco de trabajo, de modo que deberían poder solucionarse directamente.

Solución de errores y advertencias de conversión en cada proyecto Web

Una vez que haya solucionado los errores que hayan surgido en los proyectos de biblioteca de clases de la solución, el siguiente paso consistirá en resolver aquellos errores y advertencias de los que se haya informado con respecto a cada proyecto Web. Siga las siguientes instrucciones para cada proyecto Web para resolver los problemas que encuentre:

  • Abra el archivo web.config y desactive la compilación por lotes. Esto puede realizarse estableciendo el atributo batch=false en la etiqueta de compilación del siguiente modo: <compilation debug="true" batch="false"/>. Cuando la compilación por lotes se desactiva, se reduce el riesgo de enmascarar los errores de compilación que puedan existir en la aplicación y que no se hayan notificado

  • Revise las advertencias y errores indicados abriendo el archivo conversionreport.txt en la carpeta raíz del proyecto Web. Este archivo de texto contiene las secciones Errores , Advertencias y Comentarios encontrados durante la migración. Revise las dos primeras secciones y trate de resolver los problemas usando la siguiente metodología (la tercera sección es principalmente informativa y no precisa acción alguna):

    • Si hay alguna advertencia en el archivo de conversión acerca de archivos previamente "excluidos" en proceso de conversión, se recomienda eliminarlos, ya que pueden derivar en gran cantidad de errores de compilación que interferirán en la identificación y solución del resto de errores en la aplicación.

    • Para tratar los demás errores y advertencias detectados en el archivo conversionreport.txt, consulte la sección sobre problemas y soluciones habituales de conversión de ASP.NET 2.0 para obtener instrucciones específicas sobre cómo solucionar cada error y advertencia.

  • Una vez vistos todos los errores del archivo conversionreport.txt, genere el proyecto Web para poner fin a cualquier otro error de compilación que pueda surgir. Para ello, seleccione el nodo raíz del proyecto de sitio Web en el que esté trabajando y, en el menú Generar, seleccione Generar sitio Web. De nuevo, remítase a la sección sobre problemas y soluciones habituales de conversión de ASP.NET 2.0 para identificar todos los errores de compilación concretos señalados y, asimismo, obtener instrucciones sobre cómo resolverlos.

  • Cuando haya solucionado los problemas detectados y el proyecto Web se haya compilado correctamente, existen dos pasos más que se recomiendan:

    • Es posible que haya demasiados archivos *.resx en el proyecto Web que ya no sean necesarios. Estos archivos son fáciles de reconocer, ya que tienen el mismo prefijo de nombre que un archivo aspx o ascx (por ejemplo, default.aspx.resx). Visual Studio .NET 2003 creó estos archivos de recursos por cada una de las páginas, independientemente de si era necesario o no. En la mayoría de los casos, estos archivos están vacíos (o bien contienen recursos que la aplicación no usa) y por tanto pueden eliminarse.

    • Cambie el nombre de conversionreport.txt a conversionreport.webinfo. Es recomendable hacerlo porque conversionreport.txt se puede ver por medio de un explorador Web y puede revelar información confidencial sobre el sitio. Al cambiar el nombre, no se podrá tener acceso a él mediante un explorador Web de forma predeterminada.

Solución de problemas de tiempo en ejecución en cada proyecto Web

Cuando todas las bibliotecas de clases y cada proyecto Web se hayan compilado correctamente en Visual Studio 2005, el siguiente paso consistirá en ejecutar toda la aplicación y validar su funcionalidad. A medida que vaya comprobando la funcionalidad, puede que encuentre algunas excepciones de tiempo en ejecución que posiblemente se deban a cambios importantes entre ASP.NET 1.1 y ASP.NET 2.0. La sección sobre problemas y soluciones habituales de conversión de ASP.NET 2.0 le ayudará a reconocer tales errores, así como a resolverlos.

Parte 4: Información adicional

Las secciones anteriores de este documento describen el proceso global paso a paso para convertir proyectos Web de Visual Studio .NET 2003 a Visual Studio 2005. Las secciones siguientes incluyen información adicional de utilidad:

Errores de validación HTML/XHTML

Puede que se produzcan errores de validación al abrir las páginas ASPX y ASCX en IDE. Probablemente estos errores se hayan mostrado de forma predeterminada, dado que Visual Studio 2005 posee una validación HTML más rigurosa basada en el estándar XHTML 1.1.

No se trata de errores de compilación y, como tales, no deberían incidir en la funcionalidad de la aplicación. Si se abre una página ASPX o ASCX, aparecerán en la misma lista de errores que los errores de compilación, lo que puede suponer una dificultad más, ya que hay que revisar un mayor número de errores.

Son varias las cosas que puede hacer para aplazar la comprobación de estos errores de validación.

  • Cambie la validación predeterminada en Visual Studio 2005 a "Internet Explorer 6.0". Esto se lleva a cabo en la barra de herramientas si se abre una página ASPX.

    Figura 9. Establecimiento de la validación

  • Puede optar por conservar la validación en "Internet Explorer 6.0" si la compatibilidad con XHTML no es relevante en la aplicación. Si desea garantizar la compatibilidad con XHTML, se recomienda establecer la validación en "Internet Explorer 6.0" durante la conversión y, una vez finalizada ésta, cambiar la validación a XHTML.

  • Otro truco consiste en cerrar todas las páginas ASPX y ASCX abiertas tras haber seleccionado Generar sitio Web, de modo que los errores de validación HTML no se mezclen con los errores de compilación reseñados. Esto sirve para distinguir los errores relacionados con la compilación de sitio de los errores que son sencillamente problemas de compilación en HTML.

Apertura de proyectos de sitio Web usando la ficha IIS local o un archivo de solución

En este artículo hemos recomendado abrir el archivo de solución (*.sln) para abrir los proyectos Web, ya que, así, se asegura que los proyectos Web de Visual Studio .NET 2003 se abren como proyectos de "IIS local" en Visual Studio 2005 tras la conversión.

Un proyecto de sitio Web también se puede abrir en Visual Studio 2005 abriendo la carpeta del proyecto en lugar del archivo de solución. En caso de que algún integrante de su equipo o usted mismo decida abrir proyectos de esta forma, asegúrese de que los proyectos convertidos se abren mediante la ficha IIS local de Visual Studio 2005.

Figura 10. Apertura de un proyecto

Mostrar: