Tutorial: Convertir un proyecto de sitio web en un proyecto de aplicación web en Visual Studio
Actualización: noviembre 2007
En este tutorial se explica cómo convertir un proyecto de sitio web de Microsoft Visual Studio 2005 existente en un proyecto de aplicación web de Microsoft Visual Studio 2005. El modelo de proyecto de aplicación web utiliza el mismo enfoque conceptual que un proyecto web de Visual Studio .NET 2003. Esto incluye un archivo de proyecto para incluir y excluir archivos y la compilación en un ensamblado único. Para obtener más información, vea Conversión de proyectos web de Visual Studio .NET.
Nota: |
---|
Puede crear proyectos de aplicación web ASP.NET usando Visual Studio o Visual Web Developer Express. |
Entre las tareas ilustradas en este tutorial se incluyen las siguientes:
Abrir y comprobar un proyecto de sitio web de Visual Studio 2005
Crear un nuevo proyecto de aplicación web de Visual Studio 2008.
Establecer las referencias del proyecto.
Copiar los archivos en el nuevo proyecto de aplicación web.
Convertir los archivos del proyecto.
Ejecutar el proyecto de aplicación web.
Agregar la sintaxis del espacio de nombres.
Convertir los conjuntos de datos con tipo declarativos.
Convertir el código del objeto perfil.
Requisitos previos
Para poder completar este tutorial, necesitará:
Visual Studio 2008 o Microsoft Visual Studio 2005 Service Pack 1 (SP1) o Visual Web Developer Express
.NET Framework versión 2.0.
Abrir y comprobar un proyecto de sitio web de Visual Studio 2005
Antes de convertir un proyecto, debe comprobar que funciona correctamente. Esto evitará errores durante la conversión.
Para abrir y comprobar el proyecto web de Visual Studio 2005
Abra la solución de Visual Studio 2005 existente.
En el menú Archivo, haga clic en Abrir y, a continuación, en Sitio Web.
Se mostrará el cuadro de diálogo Abrir sitio Web.
Seleccione la carpeta del proyecto que desea abrir y, a continuación, haga clic en Abrir.
En el menú Generar, haga clic en Generar sitio web.
En el menú Depurar, haga clic en Iniciar depuración. O bien, presione F5.
Nota: Si se muestra el cuadro de diálogo Depuración no habilitada, seleccione Agregue un nuevo archivo Web.config con la depuración habilitada.
Compruebe que el proyecto se ejecuta según lo previsto.
Crear un nuevo proyecto de aplicación web de Visual Studio 2008.
La mejor estrategia para convertir un proyecto de sitio web de Visual Studio 2005 existente consiste en crear primero un nuevo proyecto de aplicación web de Visual Studio 2008 en blanco en un directorio independiente. Esto evita tener que cambiar los archivos de sitio web existentes. También permite copiar la funcionalidad existente en el nuevo proyecto de aplicación web.
Puede agregar el nuevo proyecto a una solución existente, lo que resulta idóneo si cuenta con varios proyectos de biblioteca de clases que desea utilizar. También puede iniciar una nueva instancia de Visual Studio y crear una nueva solución y un nuevo proyecto.
Para crear un nuevo proyecto de aplicación web de Visual Studio 2008 en una nueva solución
En Visual Studio 2008, cierre todas las soluciones abiertas.
En el menú Archivo, haga clic en Nuevo y, a continuación, haga clic en Proyecto.
Aparecerá el cuadro de diálogo Nuevo proyecto.
En la sección Tipos de proyecto del cuadro de diálogo Nuevo proyecto, expanda el lenguaje que desea utilizar y, a continuación, seleccione Web para mostrar las plantillas web.
Seleccione Aplicación web ASP.NET.
Escriba valores en Nombre, Ubicación yNombre de la solución y, a continuación, haga clic en Aceptar para crear el proyecto de aplicación web.
Una vez creado el archivo, elimine los archivos Default.aspx y Web.config que se crean automáticamente.
Establecer las referencias del proyecto
Si el proyecto de sitio web de Visual Studio 2008 requiere referencias de proyecto o de ensamblado adicionales, puede agregarlas al proyecto de aplicación web. Puede ver la lista de referencias predeterminadas con nuevos proyectos de aplicación web de Visual Studio 2008 en el nodo Referencias del Explorador de soluciones.
Nota: |
---|
A fin de evitar errores, antes de convertir los archivos del proyecto, agregue referencias al proyecto de aplicación web para los ensamblados que se encontraban en la carpeta Bin. Para obtener más información sobre cómo agregar referencias, vea el procedimiento siguiente. |
Para obtener más información acerca de las referencias, vea Referencias del proyecto.
Para agregar referencias a un proyecto de aplicación web de Visual Studio 2008
En el Explorador de soluciones, haga clic con el botón secundario en Referencias y, a continuación, haga clic en Agregar referencia.
Aparecerá el cuadro de diálogo Agregar referencia.
Seleccione la referencia que desea agregar y haga clic en Aceptar.
En el Explorador de soluciones, haga clic con el botón secundario en la aplicación web y, a continuación, haga clic en Generar.
Visual Studio genera el proyecto y comprueba que cualquier referencia entre proyectos funciona correctamente.
Copiar archivos en el proyecto de aplicación web
La manera más fácil de agregar los archivos existentes consiste en copiarlos de un directorio del proyecto de sitio web de Visual Studio 2008 en el directorio del proyecto de aplicación web.
Nota: |
---|
Si el Asistente para la configuración de orígenes de datos se inicia durante el proceso de copia, haga clic en Cancelar en el cuadro de diálogo del asistente y deje que se copie el resto de los archivos. |
Para copiar un proyecto de sitio web en un proyecto de aplicación web
En el Explorador de soluciones, haga clic con el botón secundario en el proyecto del sitio web y seleccione Abrir carpeta en el Explorador de Windows.
Seleccione los archivos del proyecto de sitio web que desea copiar.
Haga clic con el botón secundario en los archivos seleccionados y, a continuación, haga clic en Copiar.
En el proyecto de aplicación web, haga clic con el botón secundario en el proyecto de aplicación web y seleccione Abrir carpeta en el Explorador de Windows.
Pegue los archivos de proyecto del sitio web en el directorio de la aplicación web.
En el Explorador de soluciones del proyecto de aplicación web, haga clic en el botón Mostrar todos los archivos.
Seleccione los nuevos archivos en el Explorador de soluciones.
Haga clic con el botón secundario en los archivos seleccionados y, a continuación, haga clic en Incluir en el proyecto.
Una diferencia entre un proyecto de sitio web de Visual Studio 2008 y un proyecto de aplicación web de Visual Studio 2008 consiste en que el modelo de proyecto de sitio web genera de forma dinámica la clase parcial generada por la herramienta.
Después de copiar los archivos del proyecto de sitio web en el proyecto de aplicación web, observará que los archivos de código subyacente de cada página y el control de usuario siguen aún asociados a los archivos .aspx, .master y .ascx. No se ha generado ningún archivo .designer.cs ni .designer.vb. Como parte del paso siguiente, convierta estas páginas para guardar sus clases parciales en un archivo .designer.cs o .designer.vb.
Convertir los archivos del proyecto
Visual Studio incluye una opción para convertir páginas y clases de proyectos de aplicación web a fin de utilizar clases parciales. Las clases parciales se utilizan para separar el marcado en el código subyacente de una página o un control de usuario. Estas clases generadas por el diseñador se almacenan en un archivo independiente del archivo de código subyacente.
El proceso de conversión hace que Visual Studio 2008 examine de forma recursiva cada página, página maestra y control de usuario del proyecto, y genere automáticamente un archivo .designer.cs para cada uno. Visual Studio también cambia los archivos .aspx o .ascx para utilizar el atributo codeBehind en lugar del atributo codeFile. Este comando también cambia el nombre de la carpeta App_Code por Old_App_Code.
Para convertir las páginas y clases a fin de utilizar las clases parciales en un proyecto de aplicación web
En el Explorador de soluciones, haga clic con el botón secundario en la carpeta raíz del proyecto que contiene las páginas y clases que desea convertir y, a continuación, haga clic en Convertir en aplicación web.
Genere el proyecto para comprobar si existen errores de compilación.
Si aparecen errores, las dos causas más probables son las siguientes:
Falta una referencia al ensamblado y se debe agregar al proyecto.
Un problema con un tipo generado dinámicamente, como el objeto Profile o un conjunto de datos con tipo.
Si falta una referencia al ensamblado, abra el administrador de referencias y agréguela. Si usa un tipo generado dinámicamente, vea Convertir los conjuntos de datos con tipo declarativos y Convertir el código del objeto Profile más adelante en este tema.
Dado que ASP.NET 2.0 compila dinámicamente todas las clases en la carpeta App_Code, no se deben almacenar las clases en la carpeta que se compila como parte de la aplicación web de Visual Studio 2008. Si lo hace, la clase se compilará dos veces. La primera vez lo hará como parte del ensamblado del proyecto de aplicación web de Visual Studio 2008 y la segunda la compilará ASP.NET en tiempo de ejecución. Esto puede producir una excepción "no se pudo cargar el tipo", que se produce porque hay nombres de tipo duplicados en la aplicación.
En su lugar, almacene los archivos de clase en cualquier carpeta del proyecto que no sea la carpeta App_Code. El comando Convertir en aplicación web, que cambia el nombre de la carpeta a Old_App_Code, lo realiza automáticamente.
Ejecutar el proyecto de aplicación web.
Ahora puede generar y ejecutar la aplicación. De forma predeterminada, Visual Studio 2008 utiliza el Servidor de desarrollo de ASP.NET integrado para ejecutar el sitio. Además, puede configurar el proyecto para que utilice Internet Information Services (IIS). Para administrar la configuración del proyecto de aplicación web, haga clic con el botón secundario en el proyecto y, a continuación, haga clic en Propiedades. A continuación puede seleccionar la ficha Web para configurar estos valores en tiempo de ejecución.
Para obtener más información, vea Página Web, Diseñador de proyectos.
Opciones de conversión adicionales
Hay otras opciones de conversión adicionales que puede tener en cuenta cuando convierta el proyecto en un proyecto de aplicación web. Estas opciones son las siguientes:
Agregar la sintaxis del espacio de nombres.
Convertir los conjuntos de datos con tipo declarativos.
Convertir el código del objeto Profile.
Agregar la sintaxis del espacio de nombres
De forma predeterminada, las páginas y clases que se generan con el modelo de proyecto de sitio web de Visual Studio 2008 no incluyen automáticamente un espacio de nombres de código. Sin embargo, las páginas, los controles y las clases que se generan con el modelo de proyecto de aplicación web de Visual Studio 2008 incluyen automáticamente un espacio de nombres de código. Al convertir el proyecto de sitio web en un proyecto de aplicación web, tendrá que agregar los espacios de nombres al código.
Por ejemplo, si trabaja con C#, puede agregar espacios de nombres al código en las clases existentes en Visual Studio utilizando el comando de menú de acceso directo Rodear con del editor de código de C#.
Para agregar un espacio de nombres a las clases existentes
Abra el archivo de código que desea modificar.
Seleccione una o varias clases en el editor de código fuente, haga clic con el botón secundario en el código seleccionado y, a continuación, haga clic en Envolver con.
Seleccione el elemento Espacio de nombres de la lista.
Los archivos con extensiones .aspx, .ascx, .master, .ashx, .asmx y .asax contienen directivas (por ejemplo, una directiva @ Page) con atributos Inherits o Class que enumeran los nombres de clase que invocan si son páginas de código subyacente. Si agrega espacios de nombres a los archivos de código subyacente de estos tipos de archivo, también debe agregar el espacio de nombres a las declaraciones Inherits y Class. Por ejemplo, si agrega el espacio de nombres WebApplication5 al archivo de código subyacente de una página denominada Details.aspx, también debe cambiar el atributo Inherits de la directiva @ Page de inherits=Details_aspx a inherits=WebApplication5.Details_aspx.
Nota: |
---|
Si debe actualizar varias veces el espacio de nombres en un archivo, puede utilizar la característica de búsqueda y sustitución del editor de Visual Studio. |
Para obtener más información sobre cómo utilizar el comando Envolver con, vea Cómo: Utilizar fragmentos de código envolventes.
Convertir los conjuntos de datos con tipo declarativos
Si el proyecto de sitio web de Visual Studio 2008 contiene clases de conjunto de datos con establecimiento inflexible de tipos en la carpeta App_Code, debe realizar una modificación adicional para corregir el elemento connectionString del archivo Web.config. También debe restablecer el elemento connectionString en cada objeto TableAdapter de la clase de conjunto de datos.
Para corregir connectionString en los conjuntos de datos con establecimiento inflexible de tipos
En el Explorador de soluciones, haga clic con el botón secundario en la clase de conjunto de datos de la carpeta App_Code y, a continuación, haga clic en Diseñador de vistas.
Se muestra la ventana Diseñador del conjunto de datos.
Nota: Si está configurada la conexión del conjunto de datos, puede hacer doble clic en el conjunto de datos para mostrarlo en el diseñador.
Haga clic con el botón secundario en un objeto TableAdapter y, a continuación, haga clic en Propiedades.
Seleccione la propiedad Connection y restablezca la conexión seleccionando una opción disponible.
Al actualizar la conexión, también se actualiza la referencia de la cadena de conexión.
Repita estos pasos para cada objeto TableAdapter de cada conjunto de datos.
Convertir el código del objeto Profile
ASP.NET 2.0 agregó compatibilidad con las propiedades de perfil. Esta característica permite almacenar y recuperar datos del perfil de usuario en una base de datos de personalización. En proyectos de sitio web de Visual Studio 2008, ASP.NET agrega automáticamente un objeto Profile (una instancia de la clase ProfileCommon) a cada página web ASP.NET del proyecto. Este objeto proporciona acceso con establecimiento inflexible de tipos a todas las propiedades definidas en la sección del perfil del archivo Web.config de la aplicación. Puede obtener los datos de IntelliSense para este objeto, y guardar y recuperar automáticamente sus valores.
Por ejemplo, un archivo Web.config de la aplicación puede contener la sección siguiente.
<profile defaultProvider="AspNetSqlProfileProvider">
<properties>
<add name="Teachers"
type="Teachers"
allowAnonymous="true" />
</properties>
</profile>
En este caso, puede agregar el código siguiente a una página para guardar y recuperar información sobre el objeto Teachers, tal como se muestra en el ejemplo siguiente.
public partial class _Default : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
Teachers teachers = new Teachers();
teachers.Add(new Teacher("Scott"));
teachers.Add(new Teacher("Bob"));
teachers.Add(new Teacher("Paul"));
Profile.Teachers = teachers;
}
protected void Button2_Click(object sender, EventArgs e)
{
GridView1.DataSource = Profile.Teachers;
GridView1.DataBind();
}
}
Partial Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim teachers As New Teachers()
teachers.Add(New Teacher("Scott"))
teachers.Add(New Teacher("Bob"))
teachers.Add(New Teacher("Paul"))
Profile.Teachers = teachers
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
GridView1.DataSource = Profile.Teachers
GridView1.DataBind()
End Sub
End Class
El proyecto de aplicación web de Visual Studio 2008 no incluye automáticamente la clase ProfileCommon. Sin embargo, puede crear su propia clase ProfileCommon que contiene propiedades con establecimiento inflexible de tipos para los elementos configurados en el sistema del perfil. A continuación, puede tener acceso a la propiedad Profile actual del objeto HttpContext para obtener y establecer las propiedades. En el ejemplo siguiente se muestra cómo crear una clase ProfileCommon personalizada contenida en el archivo Class1.cs (Class1.vb para Visual Basic).
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.Profile;
namespace WebApplication1
{
public class ProfileCommon
{
public Teachers Teachers
{
get
{
return (Teachers) HttpContext.Current.Profile.GetPropertyValue("Teachers");
}
set
{
HttpContext.Current.Profile.SetPropertyValue("Teachers",value);
}
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Web
Imports System.Web.Profile
Namespace WebApplication1
Public Class ProfileCommon
Public Property Teachers() As Teachers
Get
Return DirectCast(HttpContext.Current.Profile.GetPropertyValue("Teachers"), Teachers)
End Get
Set(ByVal value As Teachers)
HttpContext.Current.Profile.SetPropertyValue("Teachers", value)
End Set
End Property
End Class
End Namespace
Después, puede agregar una instancia de la clase ProfileCommon denominada Profile a las páginas que deben utilizar el sistema del perfil, tal como se muestra en el ejemplo siguiente.
public partial class _Default : System.Web.UI.Page
{
ProfileCommon Profile = new ProfileCommon();
protected void Button1_Click(object sender, EventArgs e)
{
Teachers teachers = new Teachers();
teachers.Add(new Teacher("scott"));
teachers.Add(new Teacher("bob"));
teachers.Add(new Teacher("paul"));
Profile.Teachers = teachers;
}
protected void Button2_Click(object sender, EventArgs e)
{
GridView1.DataSource = Profile.Teachers;
GridView1.DataBind();
}
}
Public Partial Class _Default
Inherits System.Web.UI.Page
Public Profile As New ProfileCommon()
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim teachers As New Teachers()
teachers.Add(New Teacher("scott"))
teachers.Add(New Teacher("bob"))
teachers.Add(New Teacher("paul"))
Profile.Teachers = teachers
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs)
GridView1.DataSource = Profile.Teachers
GridView1.DataBind()
End Sub
End Class
No tendrá que cambiar ningún otro código de la página y podrá utilizar el sistema del perfil como hizo con su proyecto de sitio web original. Para obtener más información, vea Información general sobre las propiedades de perfil de ASP.NET.
Vea también
Tareas
Cómo: Utilizar fragmentos de código envolventes
Conceptos
Conversión de proyectos web de Visual Studio .NET
Información general sobre las propiedades de perfil de ASP.NET