Procédure pas à pas : conversion d'un projet de site Web en projet d'application Web dans Visual Studio

Mise à jour : novembre 2007

Cette procédure pas à pas explique comment convertir un projet de site Web Microsoft Visual Studio 2005 existant en un projet d'application Web Microsoft Visual Studio 2005. Le modèle de projet d'application Web utilise la même approche conceptuelle qu'un projet Web dans Visual Studio .NET 2003, y compris un fichier projet destiné à inclure et exclure des fichiers et une compilation dans un seul assembly. Pour plus d'informations, consultez Conversion d'un projet Web de Visual Studio .NET.

Remarque :

Vous pouvez créer des projets d'application Web ASP.NET à l'aide de Visual Studio ou de Visual Web Developer Express.

Cette procédure pas à pas illustre les tâches suivantes :

  • Ouverture et vérification du projet de site Web Visual Studio 2005

  • Création d'un projet d'application Web Visual Studio 2008

  • Définition des références du projet

  • Copie de fichiers vers le nouveau projet d'application Web

  • Conversion des fichiers projet

  • Exécution du projet d'application Web

  • Ajout d'une syntaxe d'espace de noms

  • Conversion de groupes de données typés déclaratifs

  • Conversion du code objet de profil

Composants requis

Pour exécuter cette procédure pas à pas, vous avez besoin des éléments suivants :

  • Visual Studio 2008 ou Microsoft Visual Studio 2005 Service Pack 1 (SP1) ou Visual Web Developer Express

  • .NET Framework version 2.0.

Ouverture et vérification de votre projet de site Web Visual Studio 2005

Avant de convertir un projet, vérifiez qu'il fonctionne correctement afin d'éviter l'apparition d'erreurs lors de la conversion.

Pour ouvrir et vérifier votre projet Web Visual Studio 2005

  1. Ouvrez la solution Visual Studio 2005 existante.

  2. Dans le menu Fichier, cliquez sur Ouvrir, puis sur Site Web.

    La boîte de dialogue Ouvrir le site Web s'affiche.

  3. Sélectionnez le dossier à ouvrir, puis cliquez sur Ouvrir.

  4. Dans le menu Générer, cliquez sur Générer le site Web.

  5. Dans le menu Déboguer, cliquez sur Démarrer le débogage. Vous pouvez également appuyer sur F5.

    Remarque :

    Si la boîte de dialogue Débogage non activé s'affiche, sélectionnez Ajouter un nouveau fichier Web.config avec débogage activé.

  6. Vérifiez que votre projet s'exécute comme prévu.

Création d'un projet d'application Web Visual Studio 2008

La meilleure stratégie pour convertir un projet de site Web Visual Studio 2005 existant consiste à créer tout d'abord un projet d'application Web Visual Studio 2008 vide dans un autre répertoire. Cela vous évite de devoir modifier une partie des fichiers de site Web existants, tout en vous permettant de copier des fonctionnalités existantes dans le nouveau projet d'application Web.

Vous pouvez ajouter le nouveau projet à une solution existante. Ce procédé est idéal lorsque vous possédez plusieurs projets de bibliothèque de classes que vous souhaitez utiliser. Vous pouvez également démarrer une nouvelle instance de Visual Studio et créer une solution et un projet.

Pour créer un projet d'application Web Visual Studio 2008 dans une nouvelle solution

  1. Dans Visual Studio 2008, fermez toutes les solutions ouvertes.

  2. Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet.

    La boîte de dialogue Nouveau projet s'affiche.

  3. Dans la section Types de projets de la boîte de dialogue Nouveau projet, développez le langage que vous souhaitez utiliser, puis sélectionnez Web pour afficher les modèles Web disponibles.

  4. Sélectionnez Application Web ASP.NET.

  5. Tapez des valeurs dans les champs Nom, Emplacement et Nom de solution, puis cliquez sur OK pour créer le projet d'application Web.

  6. Une fois le projet créé, supprimez les fichiers Default.aspx et Web.config créés automatiquement.

Définition des références du projet

Si le projet de site Web Visual Studio 2008 requiert d'autres références d'assembly ou de projet, vous pouvez les ajouter au projet d'application Web. Vous pouvez afficher la liste des références par défaut proposées avec les nouveaux projets d'application Web Visual Studio 2008 sous le nœud Références dans l'Explorateur de solutions.

Remarque :

Afin d'éviter toute erreur, avant de convertir les fichiers projet, ajoutez des références au projet d'application Web pour les assemblys présents dans le dossier Bin. Pour plus d'informations sur l'ajout de références, consultez la procédure suivante.

Pour plus d'informations sur les références, consultez Références de projet.

Pour ajouter des références à un projet d'application Web Visual Studio 2008

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Références, puis cliquez sur Ajouter une référence.

    La boîte de dialogue Ajouter une référence s'affiche.

  2. Sélectionnez la référence à ajouter, puis cliquez sur OK.

  3. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur l'application Web, puis cliquez sur Générer.

    Visual Studio génère le projet et vérifie que les références entre projets fonctionnent.

Copie de fichiers vers le projet d'application Web

La méthode la plus simple pour ajouter des fichiers existants consiste à les copier à partir du répertoire d'un projet de site Web Visual Studio 2008 vers le répertoire du projet d'application Web.

Remarque :

Si l'Assistant Configuration de source de données démarre lors de la copie, cliquez sur Annuler dans la boîte de dialogue de l'Assistant pour permettre la copie des autres fichiers.

Pour copier un projet de site Web vers un projet d'application Web

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet de site Web, puis sélectionnez Ouvrir le dossier dans l'Explorateur Windows.

  2. Sélectionnez les fichiers du projet de site Web à copier.

  3. Cliquez avec le bouton droit sur les fichiers sélectionnés, puis sélectionnez Copier.

  4. Dans le projet d'application Web, cliquez avec le bouton droit sur le projet d'application Web, puis sélectionnez Ouvrir le dossier dans l'Explorateur Windows.

  5. Collez les fichiers de projet de site Web dans le répertoire de l'application Web.

  6. Dans l'Explorateur de solutions du projet d'application Web, cliquez sur le bouton Afficher tous les fichiers.

  7. Sélectionnez les nouveaux fichiers dans l'Explorateur de solutions.

  8. Cliquez avec le bouton droit sur les fichiers sélectionnés, puis cliquez sur Inclure dans le projet.

Un projet de site Web Visual Studio 2008 est différent d'un projet d'application Web Visual Studio 2008, notamment car le modèle de projet de site Web génère de manière dynamique la classe partielle générée par l'outil.

Après avoir copié les fichiers à partir du projet de site Web vers le projet d'application Web, vous remarquerez que les fichiers code-behind de chaque page et contrôle utilisateur sont toujours associés aux fichiers .aspx, .master et .ascx. Aucun fichier .designer.cs ou .designer.vb n'a été généré. Au cours de l'étape suivante, vous convertirez ces pages pour enregistrer leurs classes partielles dans un fichier .designer.cs ou designer.vb.

Conversion des fichiers projet

Visual Studio inclut une option permettant de convertir les pages et les classes de projets d'application Web afin d'utiliser des classes partielles. Les classes partielles servent à séparer le balisage dans le code code-behind d'une page ou d'un contrôle utilisateur. Ces classes générées par le concepteur sont stockées dans un fichier séparé du fichier code-behind.

Ce processus de conversion implique que Visual Studio 2008 examine de manière récursive chaque page, page maître et contrôle utilisateur du projet et génère automatiquement un fichier .designer.cs pour chacun de ces éléments. Visual Studio modifie également les fichiers .aspx ou .ascx afin d'utiliser l'attribut codeBehind au lieu de l'attribut codeFile. Cette commande renomme également le dossier App_Code en Old_App_Code.

Pour convertir des pages et classes afin d'utiliser des classes partielles dans un projet d'application Web

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le dossier du projet racine qui contient les pages et classes que vous souhaitez convertir, puis cliquez sur Convertir en application Web.

  2. Générez le projet pour vous assurer qu'il ne comporte aucune erreur de compilation.

Si vous constatez la présence d'erreurs, les deux causes les plus probables sont les suivantes :

  • Une référence d'assembly est manquante et doit être ajoutée à votre projet.

  • Problème lié à un type généré dynamiquement, comme l'objet Profile ou un groupe de données typé.

Si une référence d'assembly est manquante, ouvrez le gestionnaire de références et ajoutez-la. Si vous utilisez un type généré dynamiquement, consultez Conversion de groupes de données typés déclaratifs et Conversion du code objet de profil plus loin dans cette rubrique.

Dans la mesure où ASP.NET 2.0 compile dynamiquement toutes les classes situées dans le dossier App_Code, vous ne devez pas stocker, dans ce dossier, les classes que vous compilez dans le cadre de votre application Web Visual Studio 2008. Si vous procédez de la sorte, la classe sera compilée deux fois : une fois dans le cadre de l'assembly du projet d'application Web Visual Studio 2008, puis une nouvelle fois lors de l'exécution par ASP.NET. Cela peut lever une exception "impossible de charger le type", qui se produit en raison de noms de types dupliqués dans l'application.

Stockez plutôt vos fichiers de classe dans un dossier de votre projet autre que le dossier App_Code. Cette opération est effectuée automatiquement par la commande Convertir en application Web, qui renomme le dossier en Old_App_Code.

Exécution du projet d'application Web

Vous pouvez maintenant compiler et exécuter l'application. Par défaut, Visual Studio 2008 exécute le site à l'aide du serveur de développement ASP.NET intégré. Vous pouvez également configurer le projet pour utiliser les Services Internet (IIS). Pour gérer des paramètres de projet d'application Web, cliquez avec le bouton droit sur le projet, puis cliquez sur Propriétés. Vous pouvez ensuite sélectionner l'onglet Web pour configurer ces paramètres d'exécution.

Pour plus d'informations, consultez Page Web, Concepteur de projets.

Options de conversion supplémentaires

Vous devez tenir compte d'options de conversion supplémentaires lorsque vous convertissez votre projet en un projet d'application Web. Il s'agit des options suivantes :

  • Ajout d'une syntaxe d'espace de noms

  • Conversion de groupes de données typés déclaratifs

  • Conversion du code objet de profil

Ajout d'une syntaxe d'espace de noms

Par défaut, les pages et classes générées à l'aide du modèle de projet de site Web Visual Studio 2008 n'incluent pas automatiquement d'espace de noms de code. Toutefois, les pages, contrôles et classes générés à l'aide du modèle de projet d'application Web Visual Studio 2008 incluent automatiquement un espace de noms de code. Lorsque vous convertissez le projet de site Web en un projet d'application Web, vous devez ajouter les espaces de noms au code.

Par exemple, lorsque vous travaillez en C#, vous pouvez ajouter des espaces de noms au code dans les classes existantes dans Visual Studio en utilisant la commande du menu contextuel Entourer de dans l'éditeur de code C#.

Pour ajouter un espace de noms à des classes existantes

  1. Ouvrez le fichier de code que vous souhaitez modifier.

  2. Sélectionnez une classe (ou plusieurs classes) dans l'éditeur de code source, cliquez avec le bouton droit sur le code sélectionné, puis cliquez sur Entourer de.

  3. Sélectionnez l'élément Espace de noms dans la liste.

Les fichiers portant les extensions .aspx, .ascx, .master, .ashx, .asmx et .asax contiennent des directives (par exemple, une directive @ Page) avec des attributs Inherits ou Class qui répertorient les noms de classes qu'ils appellent s'il s'agit de pages code-behind. Si vous ajoutez des espaces de noms aux fichiers code-behind de ces types de fichiers, vous devez également ajouter l'espace de noms aux déclarations Inherits et Class. Par exemple, si vous ajoutez l'espace de noms WebApplication5 au fichier code-behind d'une page nommée Details.aspx, vous pouvez également remplacer l'attribut Inherits (inherits=Details_aspx) de la directive @ Page par inherits=WebApplication5.Details_aspx.

Remarque :

Si vous devez mettre à jour plusieurs fois l'espace de noms dans un fichier, vous pouvez utiliser la fonction de recherche et de remplacement de l'éditeur Visual Studio.

Pour plus d'informations sur l'utilisation de la commande Entourer de, consultez Comment : utiliser des extraits de code Entourer de.

Conversion de groupes de données typés déclaratifs

Si le projet de site Web Visual Studio 2008 contient des classes DataSet fortement typées dans le dossier App_Code, vous devez apporter une modification supplémentaire pour résoudre l'élément connectionString dans le fichier Web.config. Vous devez également réinitialiser l'élément connectionString de chaque objet TableAdapter dans la classe DataSet.

Pour résoudre le connectionString des DataSets fortement typés

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur la classe DataSet du dossier App_Code, puis cliquez sur Concepteur de vues.

    La fenêtre Concepteur s'affiche pour le DataSet.

    Remarque :

    Si la connexion DataSet est configurée, vous pouvez double-cliquer sur le DataSet pour l'afficher dans le concepteur.

  2. Cliquez avec le bouton droit sur un objet TableAdapter, puis cliquez sur Propriétés.

  3. Sélectionnez la propriété Connection et réinitialisez la connexion en sélectionnant une option disponible.

    Lorsque vous mettez à jour la connexion, la référence de la chaîne de connexion est également mise à jour.

  4. Répétez ces étapes pour chaque objet TableAdapter de chaque DataSet.

Conversion du code objet de profil

ASP.NET 2.0 a ajouté la prise en charge des propriétés de profil. Grâce à cette fonctionnalité, vous pouvez stocker et récupérer les données d'un profil utilisateur dans une base de données de personnalisation. Dans les projets de site Web Visual Studio 2008, ASP.NET ajoute automatiquement un objet Profile (instance de la classe ProfileCommon) à chaque page Web ASP.NET du projet. Cet objet fournit un accès fortement typé à toutes les propriétés définies dans la section de profil du fichier Web.config de l'application. Vous pouvez obtenir des données IntelliSense pour cet objet, et enregistrer et récupérer automatiquement les valeurs de cet objet.

Par exemple, le fichier Web.config d'une application peut contenir la section suivante.

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

Dans ce cas, vous pouvez ajouter le code suivant à une page pour enregistrer et récupérer des informations relatives à l'objet Teachers, comme indiqué dans l'exemple suivant.

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

Le projet d'application Web Visual Studio 2008 n'inclut pas automatiquement la classe ProfileCommon. Toutefois, vous pouvez créer votre propre classe ProfileCommon qui contient des propriétés fortement typées pour les éléments configurés dans le système de profil. Vous pouvez ensuite accéder à la propriété Profile actuelle de l'objet HttpContext pour obtenir et définir les propriétés. L'exemple suivant montre comment créer une classe ProfileCommon personnalisée contenue dans le fichier Class1.cs (Class1.vb pour 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

Vous pouvez ensuite ajouter une instance de la classe ProfileCommon intitulée Profile aux pages qui doivent utiliser le système de profil, comme indiqué dans l'exemple suivant.

    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 

Vous ne devez modifier aucun autre code sur la page et vous pouvez utiliser le système de profil comme pour le projet de site Web d'origine. Pour plus d'informations, consultez Vue d'ensemble des propriétés du profil ASP.NET.

Voir aussi

Tâches

Comment : utiliser des extraits de code Entourer de

Concepts

Conversion d'un projet Web de Visual Studio .NET

Références de projet

Vue d'ensemble des propriétés du profil ASP.NET

Référence

Page Web, Concepteur de projets

@ Page