Condividi tramite


Procedura dettagliata: conversione di un progetto di sito Web in un progetto di applicazione Web in Visual Studio

Aggiornamento: novembre 2007

In questa procedura dettagliata viene descritto come convertire un progetto di sito Web di Microsoft Visual Studio 2005 esistente in un progetto di applicazione Web di Microsoft Visual Studio 2005. Per il modello di progetto di applicazione Web vengono applicati gli stessi concetti che sono alla base dei progetti Web in Visual Studio .NET 2003, tra cui l'utilizzo di un file di progetto per includere ed escludere i file e la compilazione in un unico assembly. Per ulteriori informazioni, vedere Conversione di progetti Web da Visual Studio .NET.

Nota:

I progetti di applicazione Web ASP.NET possono essere creati mediante Visual Studio o Visual Web Developer Express Edition.

Di seguito vengono illustrate le attività incluse nella procedura dettagliata:

  • Apertura e verifica del progetto di sito Web di Visual Studio 2005

  • Creazione di un nuovo progetto di applicazione Web di Visual Studio 2008.

  • Impostazione di riferimenti a progetti.

  • Copia dei file nel nuovo progetto di applicazione Web.

  • Conversione dei file di progetto.

  • Esecuzione del progetto di applicazione Web.

  • Aggiunta della sintassi dello spazio dei nomi.

  • Conversione di dataset tipizzati dichiarativi.

  • Conversione del codice dell'oggetto Profile.

Prerequisiti

Per completare questa procedura dettagliata, è necessario disporre dei seguenti elementi:

  • Visual Studio 2008 o Microsoft Visual Studio 2005 con Service Pack 1 (SP1) oppure Visual Web Developer Express Edition

  • .NET Framework versione 2.0.

Apertura e verifica del progetto di sito Web di Visual Studio 2005

Prima di convertire un progetto si consiglia di verificare che funzioni correttamente. In questo modo si eviteranno errori durante la conversione.

Per aprire e verificare il progetto Web di Visual Studio 2005

  1. Aprire la soluzione Visual Studio 2005 esistente.

  2. Scegliere Apri dal menu File, quindi Sito Web.

    Verrà visualizzata la finestra di dialogo Apri sito Web.

  3. Selezionare la cartella di progetto da aprire, quindi scegliere Apri.

  4. Scegliere Compila sito Web dal menu Compila.

  5. Scegliere Avvia debug dal menu Debug. In alternativa, premere F5.

    Nota:

    Se viene visualizzata la finestra di dialogo Debug non attivato, selezionare Aggiungi nuovo file Web.config con il debug attivato.

  6. Verificare che il progetto venga eseguito senza problemi.

Creazione di un nuovo progetto di applicazione Web di Visual Studio 2008

La strategia migliore per procedere alla conversione di un progetto di sito Web di Visual Studio 2008 esistente consiste nel creare un nuovo progetto vuoto di applicazione Web di Visual Studio 2005 in una directory separata. Si eviterà così di modificare parte dei file del sito Web esistenti e sarà possibile copiare le funzionalità esistenti nel nuovo progetto di applicazione Web.

È altresì possibile aggiungere il nuovo progetto a una soluzione esistente, un modo di procedere ideale quando si desidera utilizzare diversi progetti Libreria di classi, in alternativa è possibile avviare una nuova istanza di Visual Studio e creare una soluzione e un progetto nuovi.

Per creare un nuovo progetto di applicazione Web di Visual Studio 2008 in una nuova soluzione

  1. Chiudere tutte le soluzioni aperte in Visual Studio 2008.

  2. Scegliere Nuovo dal menu File, quindi Progetto.

    Verrà visualizzata la finestra di dialogo Nuovo progetto.

  3. Nella sezione Tipi progetto della finestra di dialogo Nuovo progetto espandere il linguaggio da utilizzare, quindi selezionare Web per visualizzare i modelli relativi al Web.

  4. Selezionare Applicazione Web ASP.NET.

  5. Digitare un valore per i campi Nome, Percorso e Nome soluzione, quindi fare clic su OK per creare il progetto di applicazione Web.

  6. Una volta creato il progetto, eliminare i file Default.aspx e Web.config creati automaticamente.

Impostazione di riferimenti a progetti

Se il progetto di sito Web di Visual Studio 2008 richiede ulteriori riferimenti a progetti o ad assembly, è possibile aggiungerli al progetto di applicazione Web. Nei nuovi progetti di applicazione Web di Visual Studio 2008 è possibile visualizzare l'elenco di riferimenti predefiniti nel nodo Riferimenti di Esplora soluzioni.

Nota:

Prima di convertire i file di progetto, al fine di evitare che si verifichino errori, aggiungere al progetto di applicazione Web i riferimenti agli assembly presenti nella cartella Bin. Per ulteriori informazioni sulla modalità di aggiunta dei riferimenti, vedere la procedura seguente.

Per ulteriori informazioni sui riferimenti, vedere Riferimenti dei progetti.

Per aggiungere riferimenti a un progetto di applicazione Web di Visual Studio 2008

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse su Riferimenti, quindi scegliere Aggiungi riferimento.

    Verrà visualizzata la finestra di dialogo Aggiungi riferimento.

  2. Selezionare il riferimento da aggiungere, quindi scegliere OK.

  3. In Esplora soluzioni fare clic con il pulsante destro del mouse sull'applicazione Web, quindi scegliere Compila.

    Il progetto verrà compilato in Visual Studio e verrà eseguita la verifica del funzionamento dei riferimenti da progetto a progetto.

Copia dei file nel progetto di applicazione Web

Il modo più semplice per aggiungere i file esistenti è copiarli dalla directory del progetto di sito Web di Visual Studio 2008 nella directory del progetto di applicazione Web.

Nota:

Se la Configurazione guidata origine dati si avvia mentre è ancora in corso la copia dei file, fare clic su Annulla nella finestra di dialogo della procedura guidata e consentire la prosecuzione del processo di copia.

Per copiare un progetto di sito Web in un progetto di applicazione Web

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto di sito Web e scegliere Apri cartella in Esplora risorse.

  2. Selezionare i file del progetto di sito Web da copiare.

  3. Fare clic con il pulsante destro del mouse sui due file selezionati e scegliere Copia.

  4. Nel progetto di applicazione Web fare clic con il pulsante destro del mouse sul progetto di applicazione Web e scegliere Apri cartella in Esplora risorse.

  5. Incollare i file del progetto di sito Web nella nuova directory dell'applicazione Web.

  6. Nella finestra Esplora soluzioni del progetto di applicazione Web scegliere Mostra tutti i file.

  7. Selezionare i nuovi file in Esplora soluzioni.

  8. Fare clic con il pulsante destro del mouse sui file selezionati e scegliere Includi nel progetto.

Un aspetto che differenzia il progetto di sito Web di Visual Studio 2008 dal progetto di applicazione Web di Visual Studio 2008 è la generazione dinamica della classe parziale generata dallo strumento da parte del modello di progetto di sito Web.

Dopo avere copiato i file dal progetto di sito Web al progetto di applicazione Web, si noterà come i file code-behind di ciascuna pagina e il controllo utente siano ancora associati ai file aspx, master e ascx. Non viene generato alcun file .designer.cs o .designer.vb. Nel prossimo passaggio queste pagine verranno convertite in modo tale da salvare le classi parziali in un file .designer.cs o .designer.vb.

Conversione dei file di progetto

Visual Studio include un'opzione per convertire pagine e classi in progetti di applicazione Web che utilizzano classi parziali. Le classi parziali vengono utilizzate per separare il markup in una pagina o il codice code-behind dei controlli utente. Le classi generate dalla finestra di progettazione sono archiviate in un file diverso dal file code-behind.

Il processo di conversione provoca in Visual Studio 2008 il riesame ricorsivo di ogni pagina, pagina master e controllo utente del progetto, nonché la generazione automatica di un file .designer.cs per ogni elemento. I file con estensione aspx o ascx vengono inoltre modificati in Visual Studio in modo da utilizzare l'attributo codeBehind anziché codeFile. Mediante questo comando inoltre la cartella App_Code viene rinominata in Old_App_Code.

Per convertire le pagine e le classi per l'utilizzo di classi parziali in un progetto di applicazione Web

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla cartella radice del progetto contenente le pagine e le classi da convertire, quindi fare clic su Converti in applicazione Web.

  2. Compilare il progetto per vedere se vengono generati errori di compilazione.

Se si verificano errori, le due cause più probabili di errore sono:

  • Un riferimento all'assembly mancante che deve essere aggiunto al progetto.

  • Un problema con un tipo generato in modo dinamico, ad esempio l'oggetto Profile o un dataset tipizzato.

Se manca un riferimento all'assembly, aprire il relativo strumento di gestione dei riferimenti e aggiungere il riferimento. Se si utilizza un tipo generato in modo dinamico, vedere le sezioni Conversione di dataset tipizzati dichiarativi e Conversione del codice dell'oggetto Profile in questo argomento.

Poiché in ASP.NET 2.0 tutte le classi incluse nella cartella App_Code vengono compilate dinamicamente, le classi che vengono compilate come parte dell'applicazione Web di Visual Studio 2008 non devono essere archiviate in tale cartella. In caso contrario, la classe verrà compilata due volte: la prima come parte dell'assembly del progetto di applicazione Web di Visual Studio 2008 e la seconda da ASP.NET in fase di esecuzione. In questo caso può essere generata l'eccezione "Impossibile caricare il tipo", la quale si verifica perché sono presenti nomi di tipo duplicati nell'applicazione.

È pertanto necessario archiviare i file delle classi in una cartella del progetto diversa dalla cartella App_Code. Questa operazione verrà eseguita automaticamente dal comando Converti in applicazione Web che rinominerà la cartella in Old_App_Code.

Esecuzione del progetto di applicazione Web

A questo punto è possibile compilare ed eseguire l'applicazione. In Visual Studio 2008 per eseguire il sito verrà utilizzato per impostazione predefinita il server di sviluppo ASP.NET incorporato. In alternativa, è possibile configurare il progetto affinché utilizzi Internet Information Services (IIS). Per gestire le impostazioni del progetto di applicazione Web, fare clic con il pulsante destro del mouse sul progetto, quindi scegliere Proprietà. Selezionare la scheda Web per configurare queste impostazioni dell'ambiente runtime.

Per ulteriori informazioni, vedere Pagina Web, Progettazione progetti.

Opzioni aggiuntive di conversione

È necessario considerare altre opzioni di conversione quando si converte il progetto in un progetto di applicazione Web. Le opzioni sono le seguenti:

  • Aggiunta della sintassi dello spazio dei nomi.

  • Conversione di dataset tipizzati dichiarativi.

  • Conversione del codice dell'oggetto Profile.

Aggiunta della sintassi dello spazio dei nomi

Per impostazione predefinita, le pagine e le classi compilate utilizzando il modello di progetto di sito Web di Visual Studio 2008 non includono automaticamente uno spazio dei nomi del codice, a differenza delle pagine, delle classi e dei controlli compilati utilizzando il modello di progetto di applicazione Web di Visual Studio 2008. Quando si converte il progetto di sito Web in un progetto di applicazione Web, sarà necessario aggiungere gli spazi dei nomi al codice.

Ad esempio, utilizzando C# è possibile aggiungere gli spazi dei nomi al codice nelle classi esistenti all'interno di Visual Studio, utilizzando il comando Racchiudi tra del menu di scelta rapida nell'editor del codice C#.

Per aggiungere uno spazio dei nomi alle classi esistenti

  1. Aprire il file di codice da modificare.

  2. Selezionare una classe (o più classi) nell'editor standard, fare clic con il pulsante destro del mouse sul codice selezionato, quindi fare clic su Racchiudi tra.

  3. Selezionare l'elemento Spazio dei nomi nell'elenco.

I file con estensione aspx, ascx, master, ashx, asmx e asax contengono direttive come @ Page unitamente all'attributo Inherits o Class nel quale sono elencati i nomi delle classi da richiamare se si tratta di pagine code-behind. Se gli spazi dei nomi vengono aggiunti ai file code-behind di questi tipi di file, sarà necessario aggiungerli anche alle dichiarazioni Inherits e Class. Ad esempio, se si aggiunge lo spazio dei nomi WebApplication5 al file code-behind di una pagina denominata Details.aspx, si dovrà modificare anche l'attributo Inherits della direttiva @ Page da inherits=Details_aspx in inherits=WebApplication5.Details_aspx.

Nota:

Se è necessario aggiornare più volte lo spazio dei nomi in un file, è possibile utilizzare il comando Trova e sostituisci dell'editor Visual Studio.

Per ulteriori informazioni sull'utilizzo del comando Racchiudi tra, vedere Procedura: utilizzare frammenti di codice racchiusi.

Conversione di dataset tipizzati dichiarativi

Se nella cartella App_Code del progetto di sito Web di Visual Studio 2008 sono contenute classi di dataset fortemente tipizzati, è necessario apportare un'ulteriore modifica per correggere l'elemento connectionString nel file Web.config. È inoltre necessario reimpostare l'elemento connectionString per ogni oggetto TableAdapter della classe di dataset.

Per correggere la proprietà connectionString di dataset fortemente tipizzati

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla classe di dataset nella cartella App_Code, quindi scegliere Visualizza finestra di progettazione.

    Verrà visualizzata la finestra Progettazione per il dataset.

    Nota:

    Se la connessione al dataset è configurata, è possibile fare doppio clic sul dataset per visualizzarlo nella finestra Progettazione.

  2. Fare clic con il pulsante destro del mouse su un oggetto TableAdapter e scegliere Proprietà.

  3. Selezionare la proprietà Connection e reimpostare la connessione selezionando un'opzione disponibile.

    Aggiornando la connessione verrà aggiornato anche il riferimento alla stringa di connessione.

  4. Ripetere questi passaggi per ogni oggetto TableAdapter di ogni dataset

Conversione del codice dell'oggetto Profile

In ASP.NET 2.0 è stato aggiunto il supporto per le proprietà dei profili. Questa funzionalità consente di archiviare e recuperare facilmente i dati del profilo utente in un database di personalizzazione. Nei progetti di sito Web di Visual Studio 2008 viene automaticamente aggiunto un oggetto Profile, ovvero una istanza della classe ProfileCommon, a ogni pagina Web ASP.NET del progetto. Tale oggetto fornisce l'accesso fortemente tipizzato a tutte le proprietà definite nella sezione relativa al profilo del file Web.config dell'applicazione. È possibile ottenere dati IntelliSense per questo oggetto, nonché salvare e recuperare automaticamente i valori da esso.

Ad esempio, in un file Web.config di un'applicazione potrebbe essere contenuta la seguente sezione.

<profile defaultProvider="AspNetSqlProfileProvider">
  <properties>
    <add name="Teachers"
      type="Teachers"
      allowAnonymous="true" />
  </properties>
</profile>

In questo caso, è possibile aggiungere il seguente codice a una pagina per salvare e recuperare le informazioni relative all'oggetto Teachers, come illustrato nell'esempio seguente.

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

Il progetto di applicazione Web di Visual Studio 2008 non include automaticamente la classe ProfileCommon. È tuttavia possibile creare una classe ProfileCommon personalizzata contenente proprietà fortemente tipizzate per gli elementi configurati nel sistema dei profili, in seguito sarà possibile accedere alla proprietà Profile corrente dell'oggetto HttpContext per ottenere e impostare le proprietà. Nell'esempio seguente viene illustrato come creare una classe ProfileCommon personalizzata contenuta nel file Class1.cs (oppure Class1.vb in 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

È quindi possibile aggiungere un'istanza della classe ProfileCommon denominata Profile alle pagine che devono utilizzare il sistema dei profili, come illustrato nell'esempio seguente.

    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 

Non sarà necessario modificare altro codice nella pagina e sarà possibile utilizzare il sistema dei profili in modo analogo al progetto di sito Web originale. Per ulteriori informazioni, vedere Cenni preliminari sulle proprietà dei profili ASP.NET.

Vedere anche

Attività

Procedura: utilizzare frammenti di codice racchiusi

Concetti

Conversione di progetti Web da Visual Studio .NET

Riferimenti dei progetti

Cenni preliminari sulle proprietà dei profili ASP.NET

Riferimenti

Pagina Web, Progettazione progetti

@ Page