Compartir a través de


Solucionar problemas de conversión a Visual Web Developer

Actualización: noviembre 2007

Cuando se utiliza Microsoft Visual Web Developer para abrir un proyecto de aplicación Web creado en una versión anterior de Microsoft Visual Studio .NET, Visual Web Developer convierte automáticamente la aplicación Web al formato utilizado en la versión 2.0 de ASP.NET.

Nota:

Para obtener información detallada acerca del proceso de conversión, vea Conversión de proyectos web de Visual Studio .NET.

En determinadas circunstancias, las aplicaciones Web se comportarán de manera diferente después de la conversión. En este tema se describen los casos más comunes y se sugieren soluciones. Para obtener más información sobre la solución de problemas de migración, vaya al Centro de desarrollo ASP.NET para la migración.

En este tema se describen los siguientes problemas de conversión:

  • Los controles representan marcado diferente después de la conversión

  • La validación de marcado genera errores

  • Los eventos de página se inician dos veces después de la conversión

  • Durante la compilación se ha informado de que hay clases ambiguas

  • Errores relacionados con cambios en el modelo de página de código subyacente

  • Errores de análisis

  • Los archivos excluidos ya no están excluidos

  • Soluciones parcialmente convertidas para tipos de proyecto mixtos

  • Abrir un sitio basado en web como un sitio de sistema de archivos

  • Los identificadores del cliente se eliminan del archivo de código subyacente

  • Error de referencia circular

Los controles representan marcado diferente después de la conversión

En ASP.NET 2.0, si no se ha identificado que el explorador no admita características XHTML, la clase Page y los controles de servidor Web ASP.NET representan de manera predeterminada marcado compatible con el estándar XHTML 1.0 Transitional. El asistente de conversión establece automáticamente el atributo mode del elemento xhtmlConformance en Legacy. Tras la conversión, la representación de los elementos podría ser ligeramente distinta que en las versiones anteriores de ASP.NET. En la mayoría de los casos, las diferencias de representación no afectarán a la funcionalidad de la aplicación. Sin embargo, si tiene secuencias de comandos de cliente que dependen de etiquetas o atributos concretos, su aplicación podría no funcionar como antes.

Para obtener más información, consulte ASP.NET y XHTML.

La validación de marcado genera errores

Después de la migración, el esquema de validación de marcado predeterminado se establece en Internet Explorer 6.0. Esto significa que el editor compara el marcado de la página con un esquema que define lo que Microsoft Internet Explorer 6.0 considera HTML válido. Este paso sirve para facilitar la transición a Visual Web Developer. Se recomienda modificar el marcado para que se validen las páginas de la aplicación mediante el esquema de validación XHTML 1.0 Transitional.

Para obtener información detallada sobre cómo cambiar el esquema de validación, vea Cómo: Seleccionar esquemas de validación para la edición de HTML en Visual Web Developer.

Los eventos de página se inician dos veces después de la conversión

En el proceso de conversión, se quita el atributo AutoEventWireup de la directiva @ Page. El valor predeterminado de este atributo es true, lo cual significa que la página inicia automáticamente eventos que tienen el nombre Page_event. Si una página tiene establecido explícitamente el atributo AutoEventWireup en false, después de la conversión, se provocarán automáticamente los eventos de la página. Si la página incluye otra forma explícita de iniciar el evento, como la palabra clave Handles en Visual Basic, podría producirse dos veces el evento. Para resolver este problema, agregue AutoEventWireup="false" a la directiva @ Page.

Durante la compilación se ha informado de que hay clases ambiguas

Después de que se convierta un proyecto, es posible que el compilador informe de que una clase es ambigua, lo que significa que se ha importado de más de un espacio de nombres. Por ejemplo, si un proyecto convertido crea una instancia de la clase Cache, el compilador informa de que la clase se encuentra tanto en el espacio de nombres System.Net como System.Web.Caching.

En casos como éstos, la versión 2.0 de .NET Framework contiene una nueva clase que tiene el mismo nombre que una clase existente. Para corregir este problema, busque en el código cualquier referencia a la clase y, a continuación, anteponga al nombre de la clase el nombre del espacio de nombres para crear una referencia con nombre completo.

Errores relacionados con cambios en el modelo de página de código subyacente

La conversión de proyectos con páginas .aspx que obtienen acceso a los miembros protegidos de clases de código subyacente puede generar excepciones. Esto es debido al cambio en el modelo de código subyacente de .NET Framework 2.0. En las versiones anteriores de .NET Framework, las páginas eran clases derivadas de clases de código subyacente. Sin embargo, en ASP.NET 2.0, las clases de código subyacente definen clases parciales que se utilizan con la página .aspx durante la generación para crear la página compilada resultante.

Un caso común en el que podría surgir este problema de conversión es una aplicación que define componentes de diseño compartidos en una clase de código subyacente de una clase base. Se puede obtener la misma funcionalidad de diseño compartida mediante controles de usuario o páginas principales, o bien, mediante el atributo CodeFileBaseClass de la directiva @ Page. Para obtener más información sobre el desarrollo de controles de usuario, vea Información general sobre los controles de usuario ASP.NET. Para obtener más información sobre el uso de páginas principales, vea Información general sobre las páginas principales ASP.NET.

Errores de análisis

El asistente de conversión notifica errores de análisis en los archivos .aspx que no se han podido analizar. Las causas de los problemas de análisis se pueden dividir en las categorías siguientes:

  • No se aplicó un formato correcto a la página .aspx antes de que se ejecutara el asistente de conversión.

  • No se encontró el atributo CodeBehind o Src de la directiva @ Page.

  • No se encontró el archivo de código subyacente al que hace referencia una página .aspx.

  • Un archivo .aspx está en el archivo de proyecto (por ejemplo, .csproj o .vbproj) pero no está en el directorio del proyecto. Si el archivo no forma parte del proyecto, se puede omitir este error.

Los archivos excluidos ya no están excluidos

En las versiones anteriores de Visual Studio, existía la opción de incluir o excluir archivos de un proyecto Web. Además, se podía excluir un archivo de la generación del proyecto estableciendo su acción de generación en None. El asistente de migración trata estos dos casos de manera diferente. El asistente de migración convierte los archivos de un proyecto Web que no están marcados como archivos excluidos. El asistente de migración no convierte los archivos que no forman parte de la generación del proyecto: son los archivos configurados con la acción de generación establecida en el valor None.

Tras finalizar el proceso de conversión, se puede eliminar cualquier archivo anteriormente excluido o cambiar su nombre con una extensión que no se utilice en Visual Studio, como la extensión .exclude. Si no se ha convertido un archivo de un proyecto dentro del proyecto Web, asegúrese de que su acción de generación esté establecida en el valor None.

Los archivos que tengan su acción de generación asociada establecida en el valor None generarán un mensaje de error en el informe de conversión. Para obtener más información acerca del informe de conversión, vea Formato del informe de conversión de la migración.

Soluciones parcialmente convertidas para tipos de proyecto mixtos

En Microsoft Visual Studio 2005 y en las versiones anteriores, puede haber una solución que se componga de proyectos web y proyectos de cliente, como bibliotecas de clases y aplicaciones para Windows. Si utiliza una edición Express de Microsoft Visual Studio 2005, sólo se podrá convertir la parte de la solución correspondiente a dicha edición. Por ejemplo, si utiliza el asistente de conversión de Visual Web Developer 2005 Express, sólo podrá convertir los proyectos web de las soluciones que abra, independientemente de los otros tipos de proyecto que contenga la solución. La solución convertida resultante sólo se convertirá parcialmente. Para convertir totalmente una solución que contiene tipos de proyecto mixtos, utilice Visual Web Developer 2005, Visual Studio 2005 o Visual Studio 2005 Team System.

Abrir un sitio basado en Web como un sitio basado en archivos

Se recomienda abrir un sitio web creado en una versión anterior de Visual Studio mediante la opción de menú Abrir sitio Web de Visual Web Developer 2005. De este modo, podrá optar por abrir el sitio como un sitio basado en archivos, un sitio local de Microsoft Internet Information Services (IIS), un sitio implementado mediante el Protocolo de transferencia de archivos (FTP) o un sitio remoto. Si abre un sitio basado en Web como un sitio basado en archivos, se perderá la información de metadatos de IIS. En particular, no se conservará la información sobre las subcarpetas marcadas como directorios virtuales. En el informe de conversión aparece una advertencia cuando un sitio basado en Web se convierte en un sitio basado en archivos.

Se recomienda cerrar el sitio Web y abrirlo de nuevo mediante el comando Abrir sitio Web y la ficha IIS local. Para obtener más información sobre cómo utilizar el asistente de migración, vea Cómo: Convertir un proyecto de Visual Studio .NET a Visual Studio 2005. Para obtener más información acerca del informe de conversión, vea Formato del informe de conversión de la migración.

Los identificadores del cliente se eliminan del archivo de código subyacente

Si hay marcado que utiliza un atributo ID del cliente (por ejemplo, en un elemento HTML div) que tenga el mismo nombre que una variable miembro declarada en la página de código subyacente, se quitará la etiqueta ID del marcado durante la conversión.

Para resolver este problema, compruebe el marcado y código antes de la conversión y busque los conflictos entre los nombres de los atributos ID y variables miembro del cliente. Cámbielos de modo que los nombres sean diferentes.

Errores de referencia circular

El proceso de conversión agrega directivas @ Reference a las páginas de código subyacente que hacen referencia a otras páginas o controles de usuario. Puede haber casos en los que se cree una referencia circular. Para solucionar el problema, puede establecer el atributo batch del elemento de compilación en el valor False. El valor predeterminado del atributo batch es True. Al establecer el lote en el valor False, puede que desaparezca el problema de la referencia circular. A más largo plazo, podrá volver a diseñar las páginas o los controles de usuario para que utilicen una clase base abstracta definida en una clase que esté almacenada en la carpeta App_Code y establecer de nuevo el valor del atributo batch en True.

Vea también

Tareas

Cómo: Seleccionar esquemas de validación para la edición de HTML en Visual Web Developer

Conceptos

Conversión de soluciones Web y archivos de proyectos

Otros recursos

Centro de desarrollo ASP.NET para la migración